home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / src / unparse.c < prev    next >
C/C++ Source or Header  |  1994-01-03  |  92KB  |  4,269 lines

  1. # include "Unparse.h"
  2. # include "yyUnpars.w"
  3. # include <stdio.h>
  4. # if defined __STDC__ | defined __cplusplus
  5. #  include <stdlib.h>
  6. # else
  7.    extern void exit ();
  8. # endif
  9. # include "Tree.h"
  10.  
  11. # define yyInline
  12. # ifndef NULL
  13. # define NULL 0L
  14. # endif
  15. # ifndef false
  16. # define false 0
  17. # endif
  18. # ifndef true
  19. # define true 1
  20. # endif
  21.  
  22. # ifdef yyInline
  23. # define yyALLOC(tree, free, max, alloc, nodesize, make, ptr, kind) \
  24.   if ((ptr = (tree) free) >= (tree) max) ptr = alloc (); \
  25.   free += nodesize [kind]; \
  26.   ptr->yyHead.yyMark = 0; \
  27.   ptr->Kind = kind;
  28. # else
  29. # define yyALLOC(tree, free, max, alloc, nodesize, make, ptr, kind) ptr = make (kind);
  30. # endif
  31.  
  32. # define yyWrite(s) (void) fputs (s, yyf)
  33. # define yyWriteNl (void) fputc ('\n', yyf)
  34.  
  35. # line 26 "FUnparse.puma"
  36.  
  37.  
  38. # include "Tree.h"
  39. # include "Idents.h"
  40. # include "StringMe.h"
  41.  
  42. # define IndentLength 3    /* indent for nested statements */
  43.  
  44. # define LineFlag 0        /* 1 prints line comments */
  45.  
  46. static FILE * f;
  47. int    indent;
  48.  
  49. unsigned char string[1024];  /* might be very long */
  50.  
  51. void FileUnparse (ef, t)
  52. FILE *ef;
  53. tTree t;
  54. { FILE *h;
  55.   h = f;      /* save local file pointer */
  56.   f = ef;     /* set external file */
  57.   Unparse (t);
  58.   f = h;
  59. }
  60.  
  61. void ind ()
  62. { int i;
  63.   for (i=0;i<indent+6;i++)
  64.      fprintf (f," ");
  65. }
  66.  
  67. void hpf_ind ()
  68. { int i;
  69.   fprintf (f, "!HPF$ ");
  70.   for (i=6;i<indent+6;i++)
  71.      fprintf (f," ");
  72. }
  73.  
  74. void label_ind (label)
  75. int label;
  76. { int i;
  77.   if (label == 0) ind ();
  78.    else { fprintf (f,"%4d  ",label);
  79.           for (i=0; i<indent;i++)
  80.            fprintf (f," ");
  81.         }
  82. }
  83.  
  84. void cont_ind ()
  85. { int i;
  86.   fprintf (f,"     $");
  87.   for (i=0; i<indent;i++)
  88.      fprintf (f," ");
  89. }
  90.  
  91. void LCR (line)
  92. int line;
  93. { if (LineFlag)
  94.      fprintf (f," ! line=%d\n", line);
  95.     else
  96.      fprintf (f,"\n");
  97. } /* LCR */
  98.  
  99. tIdent NoId ()
  100. { return (MakeIdent (" ",1));
  101. }
  102.  
  103. void MyPrintString (f, str)
  104. FILE *f;
  105. char *str;
  106. { char *spos;
  107.   spos = str;
  108.   while (*spos != 0)
  109.    { if (*spos == '\'')
  110.        fprintf (f, "\'\'");
  111.       else
  112.        fprintf (f, "%c", *spos);
  113.      spos++;
  114.    }
  115. }
  116.  
  117.  
  118.  
  119. static FILE * yyf = stdout;
  120.  
  121. static void yyAbort
  122. # ifdef __cplusplus
  123.  (char * yyFunction)
  124. # else
  125.  (yyFunction) char * yyFunction;
  126. # endif
  127. {
  128.  (void) fprintf (stderr, "Error: module Unparse, routine %s failed\n", yyFunction);
  129.  exit (1);
  130. }
  131.  
  132. void Unparse ARGS((tTree t));
  133. static int Priority ARGS((tTree yyP1));
  134. static void ComUnparse ARGS((tTree t));
  135. static void UnparseElse ARGS((tTree t));
  136. static void UnparseDoRange ARGS((tTree slice));
  137. static void ExpUnparse ARGS((tTree t, int leftprio, int rightprio));
  138. static void OpUnparse ARGS((tTree t));
  139. static void FormatUnparse ARGS((tTree t));
  140. static void LayoutUnparse ARGS((tTree t));
  141. static bool IsItAllocatable ARGS((tTree t));
  142. static int UP_List_Length ARGS((tTree t));
  143. static void FormalParamUnparse ARGS((tTree t));
  144. static void ParamUnparse ARGS((tTree t));
  145. static void AttributeUnparse ARGS((tTree t));
  146. static void AlignSpecUnparse ARGS((tTree t));
  147. static void UseNameUnparse ARGS((tTree t));
  148. static void GenSpecUnparse ARGS((tTree t));
  149.  
  150. void Unparse
  151. # if defined __STDC__ | defined __cplusplus
  152. (register tTree t)
  153. # else
  154. (t)
  155.  register tTree t;
  156. # endif
  157. {
  158. # line 122 "FUnparse.puma"
  159.  
  160. char *sindex;
  161.  
  162.   if (t == NoTree) return;
  163. # line 126 "FUnparse.puma"
  164.   {
  165. # line 127 "FUnparse.puma"
  166.    if (! ((t == NoTree))) goto yyL1;
  167.   {
  168. # line 128 "FUnparse.puma"
  169.    fprintf (f, "<NoTree>");
  170.   }
  171.   }
  172.    return;
  173. yyL1:;
  174.  
  175.  
  176.   switch (t->Kind) {
  177.   case kCOMP_UNIT:
  178. # line 131 "FUnparse.puma"
  179.   {
  180. # line 133 "FUnparse.puma"
  181.    Unparse (t->COMP_UNIT.COMP_ELEMENTS);
  182.   }
  183.    return;
  184.  
  185.   case kDECL_LIST:
  186.   if (t->DECL_LIST.Elem->Kind == kVAR_PARAM_DECL) {
  187.   if (t->DECL_LIST.Next->Kind == kDECL_EMPTY) {
  188. # line 142 "FUnparse.puma"
  189.   {
  190. # line 143 "FUnparse.puma"
  191.    GetString (t->DECL_LIST.Elem->VAR_PARAM_DECL.Name, string);
  192. # line 144 "FUnparse.puma"
  193.    fprintf (f, "%s ", string);
  194.   }
  195.    return;
  196.  
  197.   }
  198. # line 147 "FUnparse.puma"
  199.   {
  200. # line 148 "FUnparse.puma"
  201.    GetString (t->DECL_LIST.Elem->VAR_PARAM_DECL.Name, string);
  202. # line 149 "FUnparse.puma"
  203.    fprintf (f, "%s, ", string);
  204. # line 150 "FUnparse.puma"
  205.    Unparse (t->DECL_LIST.Next);
  206.   }
  207.    return;
  208.  
  209.   }
  210. # line 153 "FUnparse.puma"
  211.   {
  212. # line 154 "FUnparse.puma"
  213.    Unparse (t->DECL_LIST.Elem);
  214. # line 155 "FUnparse.puma"
  215.    Unparse (t->DECL_LIST.Next);
  216.   }
  217.    return;
  218.  
  219.   case kDECL_EMPTY:
  220. # line 158 "FUnparse.puma"
  221.    return;
  222.  
  223.   case kPROGRAM_DECL:
  224. # line 161 "FUnparse.puma"
  225.   {
  226. # line 162 "FUnparse.puma"
  227.    ind ();
  228. # line 163 "FUnparse.puma"
  229.    GetString (t->PROGRAM_DECL.Name, string);
  230. # line 164 "FUnparse.puma"
  231.    fprintf (f, "PROGRAM %s \n", string);
  232. # line 165 "FUnparse.puma"
  233.    Unparse (t->PROGRAM_DECL.PROGRAM_BODY);
  234. # line 166 "FUnparse.puma"
  235.    fprintf (f, "\n");
  236.   }
  237.    return;
  238.  
  239.   case kPROC_DECL:
  240. # line 169 "FUnparse.puma"
  241.   {
  242. # line 170 "FUnparse.puma"
  243.    ind ();
  244. # line 171 "FUnparse.puma"
  245.    GetString (t->PROC_DECL.Name, string);
  246. # line 172 "FUnparse.puma"
  247.  if (t->PROC_DECL.IsRecursive) fprintf (f, "RECURSIVE ");
  248.           if (t->PROC_DECL.IsPure) fprintf (f, "PURE ");
  249.           if (t->PROC_DECL.HPFExtrinsic==1) fprintf (f, "EXTRINSIC (HPF) ");
  250.           if (t->PROC_DECL.HPFExtrinsic==2) fprintf (f, "EXTRINSIC (HPF_LOCAL) ");
  251.  
  252. # line 177 "FUnparse.puma"
  253.    fprintf (f, "SUBROUTINE %s (", string);
  254. # line 178 "FUnparse.puma"
  255.    FormalParamUnparse (t->PROC_DECL.FORMALS);
  256. # line 179 "FUnparse.puma"
  257.    fprintf (f, ")\n");
  258. # line 180 "FUnparse.puma"
  259.    Unparse (t->PROC_DECL.PROC_BODY);
  260. # line 181 "FUnparse.puma"
  261.    fprintf (f, "\n");
  262.   }
  263.    return;
  264.  
  265.   case kFUNC_DECL:
  266.   if (t->FUNC_DECL.RESULT_TYPE->Kind == kDUMMY_TYPE) {
  267. # line 184 "FUnparse.puma"
  268.   {
  269. # line 185 "FUnparse.puma"
  270.    ind ();
  271. # line 186 "FUnparse.puma"
  272.  if (t->FUNC_DECL.IsRecursive) fprintf (f, "RECURSIVE ");
  273.           if (t->FUNC_DECL.IsPure) fprintf (f, "PURE ");
  274.           if (t->FUNC_DECL.HPFExtrinsic==1) fprintf (f, "EXTRINSIC (HPF) ");
  275.           if (t->FUNC_DECL.HPFExtrinsic==2) fprintf (f, "EXTRINSIC (HPF_LOCAL) ");
  276.  
  277. # line 191 "FUnparse.puma"
  278.    GetString (t->FUNC_DECL.Name, string);
  279. # line 192 "FUnparse.puma"
  280.    fprintf (f, "FUNCTION %s (", string);
  281. # line 193 "FUnparse.puma"
  282.    FormalParamUnparse (t->FUNC_DECL.FORMALS);
  283. # line 194 "FUnparse.puma"
  284.    fprintf (f, ")\n");
  285. # line 195 "FUnparse.puma"
  286.    Unparse (t->FUNC_DECL.FUNC_BODY);
  287. # line 196 "FUnparse.puma"
  288.    fprintf (f, "\n");
  289.   }
  290.    return;
  291.  
  292.   }
  293. # line 199 "FUnparse.puma"
  294.   {
  295. # line 200 "FUnparse.puma"
  296.    ind ();
  297. # line 201 "FUnparse.puma"
  298.  if (t->FUNC_DECL.IsRecursive) fprintf (f, "RECURSIVE ");
  299.           if (t->FUNC_DECL.IsPure) fprintf (f, "PURE ");
  300.           if (t->FUNC_DECL.HPFExtrinsic==1) fprintf (f, "EXTRINSIC (HPF) ");
  301.           if (t->FUNC_DECL.HPFExtrinsic==2) fprintf (f, "EXTRINSIC (HPF_LOCAL) ");
  302.  
  303. # line 206 "FUnparse.puma"
  304.    Unparse (t->FUNC_DECL.RESULT_TYPE);
  305. # line 207 "FUnparse.puma"
  306.    GetString (t->FUNC_DECL.Name, string);
  307. # line 208 "FUnparse.puma"
  308.    fprintf (f, " FUNCTION %s (", string);
  309. # line 209 "FUnparse.puma"
  310.    FormalParamUnparse (t->FUNC_DECL.FORMALS);
  311. # line 210 "FUnparse.puma"
  312.    fprintf (f, ")\n");
  313. # line 211 "FUnparse.puma"
  314.    Unparse (t->FUNC_DECL.FUNC_BODY);
  315. # line 212 "FUnparse.puma"
  316.    fprintf (f, "\n");
  317.   }
  318.    return;
  319.  
  320.   case kMODULE_DECL:
  321. # line 215 "FUnparse.puma"
  322.   {
  323. # line 216 "FUnparse.puma"
  324.    ind ();
  325. # line 217 "FUnparse.puma"
  326.    GetString (t->MODULE_DECL.Name, string);
  327. # line 218 "FUnparse.puma"
  328.    fprintf (f, "MODULE %s \n", string);
  329. # line 219 "FUnparse.puma"
  330.    Unparse (t->MODULE_DECL.MODULE_BODY);
  331. # line 220 "FUnparse.puma"
  332.    fprintf (f, "\n");
  333.   }
  334.    return;
  335.  
  336.   case kSTMT_FUNC_DECL:
  337. # line 223 "FUnparse.puma"
  338.   {
  339. # line 224 "FUnparse.puma"
  340.    ind ();
  341. # line 225 "FUnparse.puma"
  342.    GetString (t->STMT_FUNC_DECL.Name, string);
  343. # line 226 "FUnparse.puma"
  344.    fprintf (f, "%s (", string);
  345. # line 227 "FUnparse.puma"
  346.    Unparse (t->STMT_FUNC_DECL.FORMALS);
  347. # line 228 "FUnparse.puma"
  348.    fprintf (f, ") = ");
  349. # line 229 "FUnparse.puma"
  350.    Unparse (t->STMT_FUNC_DECL.FFUNC_BODY);
  351. # line 230 "FUnparse.puma"
  352.    fprintf (f, "\n");
  353.   }
  354.    return;
  355.  
  356.   case kEXT_PROC_DECL:
  357. # line 233 "FUnparse.puma"
  358.   {
  359. # line 234 "FUnparse.puma"
  360.    ind ();
  361. # line 235 "FUnparse.puma"
  362.    fprintf (f, "EXTERNAL ");
  363. # line 236 "FUnparse.puma"
  364.    GetString (t->EXT_PROC_DECL.Name, string);
  365. # line 237 "FUnparse.puma"
  366.    fprintf (f, "%s\n", string);
  367.   }
  368.    return;
  369.  
  370.   case kEXTERNAL_DECL:
  371. # line 240 "FUnparse.puma"
  372.   {
  373. # line 241 "FUnparse.puma"
  374.    ind ();
  375. # line 242 "FUnparse.puma"
  376.    GetString (t->EXTERNAL_DECL.Name, string);
  377. # line 243 "FUnparse.puma"
  378.    fprintf (f, "EXTERNAL %s\n", string);
  379.   }
  380.    return;
  381.  
  382.   case kINTRINSIC_DECL:
  383. # line 246 "FUnparse.puma"
  384.   {
  385. # line 247 "FUnparse.puma"
  386.    ind ();
  387. # line 248 "FUnparse.puma"
  388.    GetString (t->INTRINSIC_DECL.Name, string);
  389. # line 249 "FUnparse.puma"
  390.    fprintf (f, "INTRINSIC %s\n", string);
  391.   }
  392.    return;
  393.  
  394.   case kEXT_FUNC_DECL:
  395. # line 252 "FUnparse.puma"
  396.   {
  397. # line 253 "FUnparse.puma"
  398.    fprintf (f, "FUNCTION ");
  399. # line 254 "FUnparse.puma"
  400.    GetString (t->EXT_FUNC_DECL.Name, string);
  401. # line 255 "FUnparse.puma"
  402.    fprintf (f, "%s (", string);
  403. # line 256 "FUnparse.puma"
  404.    Unparse (t->EXT_FUNC_DECL.FORMALS);
  405. # line 257 "FUnparse.puma"
  406.    fprintf (f, ") : ");
  407. # line 258 "FUnparse.puma"
  408.    Unparse (t->EXT_FUNC_DECL.RESULT_TYPE);
  409. # line 259 "FUnparse.puma"
  410.    fprintf (f, "; external;\n");
  411.   }
  412.    return;
  413.  
  414.   case kVAL_PARAM_DECL:
  415. # line 262 "FUnparse.puma"
  416.   {
  417. # line 263 "FUnparse.puma"
  418.    GetString (t->VAL_PARAM_DECL.Name, string);
  419. # line 264 "FUnparse.puma"
  420.    fprintf (f, "%s: ", string);
  421. # line 265 "FUnparse.puma"
  422.    Unparse (t->VAL_PARAM_DECL.VAL);
  423. # line 266 "FUnparse.puma"
  424.    fprintf (f, "; ");
  425.   }
  426.    return;
  427.  
  428.   case kBOOL_CONSTANT:
  429.   if (equalint (t->BOOL_CONSTANT.value, 1)) {
  430. # line 269 "FUnparse.puma"
  431.   {
  432. # line 270 "FUnparse.puma"
  433.    fprintf (f, ".TRUE.");
  434.   }
  435.    return;
  436.  
  437.   }
  438.   if (equalint (t->BOOL_CONSTANT.value, 0)) {
  439. # line 273 "FUnparse.puma"
  440.   {
  441. # line 274 "FUnparse.puma"
  442.    fprintf (f, ".FALSE.");
  443.   }
  444.    return;
  445.  
  446.   }
  447.   break;
  448.   case kINT_CONSTANT:
  449. # line 277 "FUnparse.puma"
  450.   {
  451. # line 278 "FUnparse.puma"
  452.    fprintf (f, "%d", t->INT_CONSTANT.value);
  453.   }
  454.    return;
  455.  
  456.   case kREAL_CONSTANT:
  457. # line 281 "FUnparse.puma"
  458.   {
  459. # line 282 "FUnparse.puma"
  460.    StGetString (t->REAL_CONSTANT.value, string);
  461. # line 283 "FUnparse.puma"
  462.    MyPrintString (f, string);
  463.   }
  464.    return;
  465.  
  466.   case kDREAL_CONSTANT:
  467. # line 286 "FUnparse.puma"
  468.   {
  469. # line 287 "FUnparse.puma"
  470.    StGetString (t->DREAL_CONSTANT.value, string);
  471. # line 288 "FUnparse.puma"
  472.    MyPrintString (f, string);
  473.   }
  474.    return;
  475.  
  476.   case kCOMPLEX_CONSTANT:
  477. # line 291 "FUnparse.puma"
  478.   {
  479. # line 292 "FUnparse.puma"
  480.    StGetString (t->COMPLEX_CONSTANT.rvalue, string);
  481. # line 293 "FUnparse.puma"
  482.    MyPrintString (f, string);
  483. # line 294 "FUnparse.puma"
  484.    StGetString (t->COMPLEX_CONSTANT.ivalue, string);
  485. # line 295 "FUnparse.puma"
  486.    MyPrintString (f, string);
  487.   }
  488.    return;
  489.  
  490.   case kSTRING_CONSTANT:
  491. # line 298 "FUnparse.puma"
  492.   {
  493. # line 299 "FUnparse.puma"
  494.    StGetString (t->STRING_CONSTANT.value, string);
  495. # line 300 "FUnparse.puma"
  496.    fprintf (f, "\'");
  497. # line 301 "FUnparse.puma"
  498.    MyPrintString (f, string);
  499. # line 302 "FUnparse.puma"
  500.    fprintf (f, "\'");
  501.   }
  502.    return;
  503.  
  504.   case kVAR_DECL:
  505.   if (t->VAR_DECL.VAL->Kind == kARRAY_TYPE) {
  506.   if (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_COMP_TYPE->Kind == kDUMMY_TYPE) {
  507. # line 311 "FUnparse.puma"
  508.   {
  509. # line 312 "FUnparse.puma"
  510.    ind ();
  511. # line 313 "FUnparse.puma"
  512.  if (   ((target_machine == SUPRENUM) || (target_machine == CM5))
  513.               && IsItAllocatable (t->VAR_DECL.VAL)
  514.              )
  515.           {  fprintf (f,"ALLOCATABLE :: ");
  516.              GetString (t->VAR_DECL.Name,string);
  517.              fprintf (f," %s (",string);
  518.              Unparse (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  519.              fprintf (f,")\n");
  520.           }
  521.           else
  522.           {  fprintf (f,"DIMENSION ");
  523.              GetString (t->VAR_DECL.Name,string);
  524.              fprintf (f," %s (",string);
  525.              Unparse (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  526.              fprintf (f,")\n");
  527.           }
  528.  
  529.   }
  530.    return;
  531.  
  532.   }
  533. # line 332 "FUnparse.puma"
  534.   {
  535. # line 333 "FUnparse.puma"
  536.    ind ();
  537. # line 334 "FUnparse.puma"
  538.    Unparse (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_COMP_TYPE);
  539. # line 335 "FUnparse.puma"
  540.  if (   ((target_machine == SUPRENUM) || (target_machine == CM5))
  541.               && IsItAllocatable (t->VAR_DECL.VAL)
  542.              )
  543.           {  fprintf (f,", ALLOCATABLE :: ");
  544.              GetString (t->VAR_DECL.Name,string);
  545.              fprintf (f," %s (",string);
  546.              Unparse (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  547.              fprintf (f,")\n");
  548.           }
  549.           else
  550.           {  GetString (t->VAR_DECL.Name,string);
  551.              fprintf (f," %s (",string);
  552.              Unparse (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  553.              fprintf (f,")\n");
  554.           }
  555.  
  556.   }
  557.    return;
  558.  
  559.   }
  560. # line 353 "FUnparse.puma"
  561.   {
  562. # line 354 "FUnparse.puma"
  563.    ind ();
  564. # line 355 "FUnparse.puma"
  565.    Unparse (t->VAR_DECL.VAL);
  566. # line 356 "FUnparse.puma"
  567.    GetString (t->VAR_DECL.Name, string);
  568. # line 357 "FUnparse.puma"
  569.    fprintf (f, " %s \n", string);
  570.   }
  571.    return;
  572.  
  573.   case kVAR_PARAM_DECL:
  574. # line 360 "FUnparse.puma"
  575.   {
  576. # line 361 "FUnparse.puma"
  577.    ind ();
  578. # line 362 "FUnparse.puma"
  579.    Unparse (t->VAR_PARAM_DECL.VAL);
  580. # line 363 "FUnparse.puma"
  581.    GetString (t->VAR_PARAM_DECL.Name, string);
  582. # line 364 "FUnparse.puma"
  583.    fprintf (f, " %s \n", string);
  584.   }
  585.    return;
  586.  
  587.   case kENTITY_DECL:
  588.   if (t->ENTITY_DECL.ATTRIBUTES->DECL_LIST.Elem->Kind == kTYPESPEC_DECL) {
  589. # line 367 "FUnparse.puma"
  590.   {
  591. # line 368 "FUnparse.puma"
  592.    ind ();
  593. # line 369 "FUnparse.puma"
  594.    Unparse (t->ENTITY_DECL.ATTRIBUTES->DECL_LIST.Elem->TYPESPEC_DECL.VAL);
  595. # line 370 "FUnparse.puma"
  596.    AttributeUnparse (t->ENTITY_DECL.ATTRIBUTES->DECL_LIST.Next);
  597. # line 371 "FUnparse.puma"
  598.    GetString (t->ENTITY_DECL.Name, string);
  599. # line 372 "FUnparse.puma"
  600.    fprintf (f, " :: %s\n", string);
  601.   }
  602.    return;
  603.  
  604.   }
  605. # line 375 "FUnparse.puma"
  606.   {
  607. # line 376 "FUnparse.puma"
  608.    fprintf (f, "!HPF$ ");
  609. # line 377 "FUnparse.puma"
  610.    AttributeUnparse (t->ENTITY_DECL.ATTRIBUTES->DECL_LIST.Elem);
  611. # line 378 "FUnparse.puma"
  612.    AttributeUnparse (t->ENTITY_DECL.ATTRIBUTES->DECL_LIST.Next);
  613. # line 379 "FUnparse.puma"
  614.    GetString (t->ENTITY_DECL.Name, string);
  615. # line 380 "FUnparse.puma"
  616.    fprintf (f, " :: %s\n", string);
  617.   }
  618.    return;
  619.  
  620.   case kTEMPLATE_DECL:
  621.   if (t->TEMPLATE_DECL.DIMENSIONS->Kind == kTYPE_EMPTY) {
  622. # line 389 "FUnparse.puma"
  623.   {
  624. # line 390 "FUnparse.puma"
  625.    GetString (t->TEMPLATE_DECL.Name, string);
  626. # line 391 "FUnparse.puma"
  627.    fprintf (f, "!HPF$ TEMPLATE %s\n", string);
  628.   }
  629.    return;
  630.  
  631.   }
  632. # line 394 "FUnparse.puma"
  633.   {
  634. # line 395 "FUnparse.puma"
  635.    GetString (t->TEMPLATE_DECL.Name, string);
  636. # line 396 "FUnparse.puma"
  637.    fprintf (f, "!HPF$ TEMPLATE %s (", string);
  638. # line 397 "FUnparse.puma"
  639.    Unparse (t->TEMPLATE_DECL.DIMENSIONS);
  640. # line 398 "FUnparse.puma"
  641.    fprintf (f, ")\n");
  642.   }
  643.    return;
  644.  
  645.   case kPROCESSORS_DECL:
  646.   if (t->PROCESSORS_DECL.DIMENSIONS->Kind == kTYPE_EMPTY) {
  647. # line 401 "FUnparse.puma"
  648.   {
  649. # line 402 "FUnparse.puma"
  650.    GetString (t->PROCESSORS_DECL.Name, string);
  651. # line 403 "FUnparse.puma"
  652.    fprintf (f, "!HPF$ PROCESSORS %s\n", string);
  653.   }
  654.    return;
  655.  
  656.   }
  657. # line 406 "FUnparse.puma"
  658.   {
  659. # line 407 "FUnparse.puma"
  660.    GetString (t->PROCESSORS_DECL.Name, string);
  661. # line 408 "FUnparse.puma"
  662.    fprintf (f, "!HPF$ PROCESSORS %s (", string);
  663. # line 409 "FUnparse.puma"
  664.    Unparse (t->PROCESSORS_DECL.DIMENSIONS);
  665. # line 410 "FUnparse.puma"
  666.    fprintf (f, ")\n");
  667.   }
  668.    return;
  669.  
  670.   case kIMPLICIT_DECL:
  671.   if (t->IMPLICIT_DECL.VAL->Kind == kDUMMY_TYPE) {
  672. # line 413 "FUnparse.puma"
  673.   {
  674. # line 414 "FUnparse.puma"
  675.    ind ();
  676. # line 415 "FUnparse.puma"
  677.    fprintf (f, "IMPLICIT none\n");
  678.   }
  679.    return;
  680.  
  681.   }
  682. # line 418 "FUnparse.puma"
  683.   {
  684. # line 419 "FUnparse.puma"
  685.    ind ();
  686. # line 420 "FUnparse.puma"
  687.    fprintf (f, "IMPLICIT ");
  688. # line 421 "FUnparse.puma"
  689.    Unparse (t->IMPLICIT_DECL.VAL);
  690. # line 422 "FUnparse.puma"
  691.    GetString (t->IMPLICIT_DECL.first, string);
  692. # line 423 "FUnparse.puma"
  693.    fprintf (f, " (%s-", string);
  694. # line 424 "FUnparse.puma"
  695.    GetString (t->IMPLICIT_DECL.last, string);
  696. # line 425 "FUnparse.puma"
  697.    fprintf (f, "%s)\n", string);
  698.   }
  699.    return;
  700.  
  701.   case kCOMMON_DECL:
  702.   if (t->COMMON_DECL.IDS->Kind == kDECL_EMPTY) {
  703. # line 428 "FUnparse.puma"
  704.    return;
  705.  
  706.   }
  707. # line 432 "FUnparse.puma"
  708.   {
  709. # line 433 "FUnparse.puma"
  710.    GetString (t->COMMON_DECL.Name, string);
  711. # line 434 "FUnparse.puma"
  712.    ind ();
  713. # line 435 "FUnparse.puma"
  714.    fprintf (f, "COMMON /%s/", string);
  715. # line 436 "FUnparse.puma"
  716.    ComUnparse (t->COMMON_DECL.IDS);
  717. # line 437 "FUnparse.puma"
  718.    fprintf (f, "\n");
  719.   }
  720.    return;
  721.  
  722.   case kNAMELIST_DECL:
  723. # line 440 "FUnparse.puma"
  724.   {
  725. # line 441 "FUnparse.puma"
  726.    GetString (t->NAMELIST_DECL.Name, string);
  727. # line 442 "FUnparse.puma"
  728.    ind ();
  729. # line 443 "FUnparse.puma"
  730.    fprintf (f, "NAMELIST /%s/", string);
  731. # line 444 "FUnparse.puma"
  732.    ComUnparse (t->NAMELIST_DECL.IDS);
  733. # line 445 "FUnparse.puma"
  734.    fprintf (f, "\n");
  735.   }
  736.    return;
  737.  
  738.   case kEQV_DECL:
  739. # line 448 "FUnparse.puma"
  740.   {
  741. # line 449 "FUnparse.puma"
  742.    ind ();
  743. # line 450 "FUnparse.puma"
  744.    fprintf (f, "EQUIVALENCE (");
  745. # line 451 "FUnparse.puma"
  746.    Unparse (t->EQV_DECL.VARS);
  747. # line 452 "FUnparse.puma"
  748.    fprintf (f, ")\n");
  749.   }
  750.    return;
  751.  
  752.   case kUSE_DECL:
  753.   if (t->USE_DECL.RENAMINGS->Kind == kDECL_EMPTY) {
  754. # line 461 "FUnparse.puma"
  755.   {
  756. # line 462 "FUnparse.puma"
  757.    ind ();
  758. # line 463 "FUnparse.puma"
  759.    GetString (t->USE_DECL.use, string);
  760. # line 464 "FUnparse.puma"
  761.    fprintf (f, "USE %s\n", string);
  762.   }
  763.    return;
  764.  
  765.   }
  766. # line 467 "FUnparse.puma"
  767.   {
  768. # line 468 "FUnparse.puma"
  769.    ind ();
  770. # line 469 "FUnparse.puma"
  771.    GetString (t->USE_DECL.use, string);
  772. # line 470 "FUnparse.puma"
  773.    fprintf (f, "USE %s , ", string);
  774. # line 471 "FUnparse.puma"
  775.    UseNameUnparse (t->USE_DECL.RENAMINGS);
  776. # line 472 "FUnparse.puma"
  777.    fprintf (f, "\n");
  778.   }
  779.    return;
  780.  
  781.   case kONLY_USE_DECL:
  782. # line 475 "FUnparse.puma"
  783.   {
  784. # line 476 "FUnparse.puma"
  785.    ind ();
  786. # line 477 "FUnparse.puma"
  787.    GetString (t->ONLY_USE_DECL.use, string);
  788. # line 478 "FUnparse.puma"
  789.    fprintf (f, "USE %s ONLY :: ", string);
  790. # line 479 "FUnparse.puma"
  791.    UseNameUnparse (t->ONLY_USE_DECL.NAMES);
  792. # line 480 "FUnparse.puma"
  793.    fprintf (f, "\n");
  794.   }
  795.    return;
  796.  
  797.   case kTYPE_DECL:
  798.   if (t->TYPE_DECL.VAL->Kind == kRECORD_TYPE) {
  799. # line 489 "FUnparse.puma"
  800.   {
  801. # line 490 "FUnparse.puma"
  802.    ind ();
  803. # line 491 "FUnparse.puma"
  804.    GetString (t->TYPE_DECL.Name, string);
  805. # line 492 "FUnparse.puma"
  806.    fprintf (f, "TYPE %s\n", string);
  807. # line 493 "FUnparse.puma"
  808.  indent = indent + IndentLength;
  809. # line 494 "FUnparse.puma"
  810.    Unparse (t->TYPE_DECL.VAL->RECORD_TYPE.COMPONENTS);
  811. # line 495 "FUnparse.puma"
  812.  indent = indent - IndentLength;
  813. # line 496 "FUnparse.puma"
  814.    ind ();
  815. # line 497 "FUnparse.puma"
  816.    fprintf (f, "END TYPE\n");
  817.   }
  818.    return;
  819.  
  820.   }
  821.   break;
  822.   case kINTERFACE_DECL:
  823. # line 506 "FUnparse.puma"
  824.   {
  825. # line 507 "FUnparse.puma"
  826.    ind ();
  827. # line 508 "FUnparse.puma"
  828.    fprintf (f, "INTERFACE");
  829. # line 509 "FUnparse.puma"
  830.    GenSpecUnparse (t->INTERFACE_DECL.SPEC);
  831. # line 510 "FUnparse.puma"
  832.    fprintf (f, "\n");
  833. # line 511 "FUnparse.puma"
  834.    Unparse (t->INTERFACE_DECL.ITEMS);
  835. # line 512 "FUnparse.puma"
  836.    ind ();
  837. # line 513 "FUnparse.puma"
  838.    fprintf (f, "END INTERFACE\n\n");
  839.   }
  840.    return;
  841.  
  842.   case kDIMENSION_DECL:
  843. # line 522 "FUnparse.puma"
  844.   {
  845. # line 523 "FUnparse.puma"
  846.    ind ();
  847. # line 524 "FUnparse.puma"
  848.    GetString (t->DIMENSION_DECL.Name, string);
  849. # line 525 "FUnparse.puma"
  850.    fprintf (f, "DIMENSION %s (", string);
  851. # line 526 "FUnparse.puma"
  852.    Unparse (t->DIMENSION_DECL.INDEXES);
  853. # line 527 "FUnparse.puma"
  854.    fprintf (f, ")\n");
  855.   }
  856.    return;
  857.  
  858.   case kPARAMETER_DECL:
  859. # line 530 "FUnparse.puma"
  860.   {
  861. # line 531 "FUnparse.puma"
  862.    ind ();
  863. # line 532 "FUnparse.puma"
  864.    GetString (t->PARAMETER_DECL.Name, string);
  865. # line 533 "FUnparse.puma"
  866.    fprintf (f, "PARAMETER ( %s = ", string);
  867. # line 534 "FUnparse.puma"
  868.    Unparse (t->PARAMETER_DECL.VAL);
  869. # line 535 "FUnparse.puma"
  870.    fprintf (f, " )\n");
  871.   }
  872.    return;
  873.  
  874.   case kSAVE_DECL:
  875. # line 538 "FUnparse.puma"
  876.   {
  877. # line 539 "FUnparse.puma"
  878.    ind ();
  879. # line 540 "FUnparse.puma"
  880.    GetString (t->SAVE_DECL.Name, string);
  881. # line 541 "FUnparse.puma"
  882.    fprintf (f, "SAVE %s\n", string);
  883.   }
  884.    return;
  885.  
  886.   case kINTENT_DECL:
  887.   if (equalint (t->INTENT_DECL.intent, 0)) {
  888. # line 544 "FUnparse.puma"
  889.   {
  890. # line 545 "FUnparse.puma"
  891.    ind ();
  892. # line 546 "FUnparse.puma"
  893.    GetString (t->INTENT_DECL.Name, string);
  894. # line 547 "FUnparse.puma"
  895.    fprintf (f, "INTENT(IN) %s\n", string);
  896.   }
  897.    return;
  898.  
  899.   }
  900.   if (equalint (t->INTENT_DECL.intent, 1)) {
  901. # line 550 "FUnparse.puma"
  902.   {
  903. # line 551 "FUnparse.puma"
  904.    ind ();
  905. # line 552 "FUnparse.puma"
  906.    GetString (t->INTENT_DECL.Name, string);
  907. # line 553 "FUnparse.puma"
  908.    fprintf (f, "INTENT(OUT) %s\n", string);
  909.   }
  910.    return;
  911.  
  912.   }
  913.   if (equalint (t->INTENT_DECL.intent, 2)) {
  914. # line 556 "FUnparse.puma"
  915.   {
  916. # line 557 "FUnparse.puma"
  917.    ind ();
  918. # line 558 "FUnparse.puma"
  919.    GetString (t->INTENT_DECL.Name, string);
  920. # line 559 "FUnparse.puma"
  921.    fprintf (f, "INTENT(INOUT) %s\n", string);
  922.   }
  923.    return;
  924.  
  925.   }
  926.   break;
  927.   case kOPTIONAL_DECL:
  928. # line 562 "FUnparse.puma"
  929.   {
  930. # line 563 "FUnparse.puma"
  931.    ind ();
  932. # line 564 "FUnparse.puma"
  933.    GetString (t->OPTIONAL_DECL.Name, string);
  934. # line 565 "FUnparse.puma"
  935.    fprintf (f, "OPTIONAL %s\n", string);
  936.   }
  937.    return;
  938.  
  939.   case kTARGET_DECL:
  940. # line 568 "FUnparse.puma"
  941.   {
  942. # line 569 "FUnparse.puma"
  943.    ind ();
  944. # line 570 "FUnparse.puma"
  945.    GetString (t->TARGET_DECL.Name, string);
  946. # line 571 "FUnparse.puma"
  947.    fprintf (f, "TARGET %s\n", string);
  948.   }
  949.    return;
  950.  
  951.   case kPOINTER_DECL:
  952. # line 574 "FUnparse.puma"
  953.   {
  954. # line 575 "FUnparse.puma"
  955.    ind ();
  956. # line 576 "FUnparse.puma"
  957.    GetString (t->POINTER_DECL.Name, string);
  958. # line 577 "FUnparse.puma"
  959.    fprintf (f, "POINTER %s\n", string);
  960.   }
  961.    return;
  962.  
  963.   case kPUBLIC_DECL:
  964. # line 580 "FUnparse.puma"
  965.   {
  966. # line 581 "FUnparse.puma"
  967.    ind ();
  968. # line 582 "FUnparse.puma"
  969.    GetString (t->PUBLIC_DECL.Name, string);
  970. # line 583 "FUnparse.puma"
  971.    fprintf (f, "PUBLIC %s\n", string);
  972.   }
  973.    return;
  974.  
  975.   case kPRIVATE_DECL:
  976. # line 586 "FUnparse.puma"
  977.   {
  978. # line 587 "FUnparse.puma"
  979.    ind ();
  980. # line 588 "FUnparse.puma"
  981.    GetString (t->PRIVATE_DECL.Name, string);
  982. # line 589 "FUnparse.puma"
  983.    fprintf (f, "PRIVATE %s\n", string);
  984.   }
  985.    return;
  986.  
  987.   case kALIGN_DECL:
  988.   if (t->ALIGN_DECL.ALIGN_SOURCE->Kind == kBTE_EMPTY) {
  989. # line 592 "FUnparse.puma"
  990.   {
  991. # line 593 "FUnparse.puma"
  992.    GetString (t->ALIGN_DECL.Name, string);
  993. # line 594 "FUnparse.puma"
  994.    fprintf (f, "!HPF$ ALIGN %s WITH ", string);
  995. # line 595 "FUnparse.puma"
  996.    AlignSpecUnparse (t->ALIGN_DECL.ALIGN_SPEC);
  997. # line 596 "FUnparse.puma"
  998.    fprintf (f, "\n");
  999.   }
  1000.    return;
  1001.  
  1002.   }
  1003. # line 599 "FUnparse.puma"
  1004.   {
  1005. # line 600 "FUnparse.puma"
  1006.    GetString (t->ALIGN_DECL.Name, string);
  1007. # line 601 "FUnparse.puma"
  1008.    fprintf (f, "!HPF$ ALIGN %s (", string);
  1009. # line 602 "FUnparse.puma"
  1010.    Unparse (t->ALIGN_DECL.ALIGN_SOURCE);
  1011. # line 603 "FUnparse.puma"
  1012.    fprintf (f, ") WITH ");
  1013. # line 604 "FUnparse.puma"
  1014.    AlignSpecUnparse (t->ALIGN_DECL.ALIGN_SPEC);
  1015. # line 605 "FUnparse.puma"
  1016.    fprintf (f, "\n");
  1017.   }
  1018.    return;
  1019.  
  1020.   case kDYNAMIC_DECL:
  1021. # line 608 "FUnparse.puma"
  1022.   {
  1023. # line 609 "FUnparse.puma"
  1024.    GetString (t->DYNAMIC_DECL.Name, string);
  1025. # line 610 "FUnparse.puma"
  1026.    fprintf (f, "!HPF$ DYNAMIC %s\n", string);
  1027.   }
  1028.    return;
  1029.  
  1030.   case kDISTRIBUTE_DECL:
  1031. # line 613 "FUnparse.puma"
  1032.   {
  1033. # line 614 "FUnparse.puma"
  1034.    GetString (t->DISTRIBUTE_DECL.Name, string);
  1035. # line 615 "FUnparse.puma"
  1036.    fprintf (f, "!HPF$ DISTRIBUTE %s ", string);
  1037. # line 616 "FUnparse.puma"
  1038.    LayoutUnparse (t->DISTRIBUTE_DECL.DISTRIBUTION);
  1039. # line 617 "FUnparse.puma"
  1040.  if (t->DISTRIBUTE_DECL.target != NoId())
  1041.             { GetString (t->DISTRIBUTE_DECL.target, string);
  1042.               fprintf (f," ONTO %s", string);
  1043.             }
  1044.  
  1045. # line 622 "FUnparse.puma"
  1046.    fprintf (f, "\n");
  1047.   }
  1048.    return;
  1049.  
  1050.   case kSEQUENCE_DECL:
  1051. # line 625 "FUnparse.puma"
  1052.   {
  1053. # line 626 "FUnparse.puma"
  1054.    hpf_ind ();
  1055. # line 627 "FUnparse.puma"
  1056.    GetString (t->SEQUENCE_DECL.Name, string);
  1057. # line 628 "FUnparse.puma"
  1058.    fprintf (f, "SEQUENCE %s\n", string);
  1059.   }
  1060.    return;
  1061.  
  1062.   case kNOSEQUENCE_DECL:
  1063. # line 631 "FUnparse.puma"
  1064.   {
  1065. # line 632 "FUnparse.puma"
  1066.    hpf_ind ();
  1067. # line 633 "FUnparse.puma"
  1068.    GetString (t->NOSEQUENCE_DECL.Name, string);
  1069. # line 634 "FUnparse.puma"
  1070.    fprintf (f, "NO SEQUENCE %s\n", string);
  1071.   }
  1072.    return;
  1073.  
  1074.   case kDATA_DECL:
  1075. # line 637 "FUnparse.puma"
  1076.   {
  1077. # line 638 "FUnparse.puma"
  1078.    ind ();
  1079. # line 639 "FUnparse.puma"
  1080.    fprintf (f, "DATA ");
  1081. # line 640 "FUnparse.puma"
  1082.    Unparse (t->DATA_DECL.VARS);
  1083. # line 641 "FUnparse.puma"
  1084.    fprintf (f, " / ");
  1085. # line 642 "FUnparse.puma"
  1086.    Unparse (t->DATA_DECL.VALS);
  1087. # line 643 "FUnparse.puma"
  1088.    fprintf (f, " / \n");
  1089.   }
  1090.    return;
  1091.  
  1092.   case kBLOCK_DATA_DECL:
  1093. # line 646 "FUnparse.puma"
  1094.   {
  1095. # line 647 "FUnparse.puma"
  1096.    ind ();
  1097. # line 648 "FUnparse.puma"
  1098.    GetString (t->BLOCK_DATA_DECL.Name, string);
  1099. # line 649 "FUnparse.puma"
  1100.    fprintf (f, "BLOCK DATA %s\n", string);
  1101. # line 650 "FUnparse.puma"
  1102.    Unparse (t->BLOCK_DATA_DECL.DATA_BODY);
  1103. # line 651 "FUnparse.puma"
  1104.    fprintf (f, "\n");
  1105.   }
  1106.    return;
  1107.  
  1108.   case kBODY_NODE:
  1109.   if (t->BODY_NODE.INTERNALS->Kind == kDECL_EMPTY) {
  1110. # line 660 "FUnparse.puma"
  1111.   {
  1112. # line 661 "FUnparse.puma"
  1113.    Unparse (t->BODY_NODE.DECLS);
  1114. # line 662 "FUnparse.puma"
  1115.    Unparse (t->BODY_NODE.STATS);
  1116. # line 663 "FUnparse.puma"
  1117.    ind ();
  1118. # line 664 "FUnparse.puma"
  1119.    fprintf (f, "END\n");
  1120.   }
  1121.    return;
  1122.  
  1123.   }
  1124. # line 667 "FUnparse.puma"
  1125.   {
  1126. # line 668 "FUnparse.puma"
  1127.    Unparse (t->BODY_NODE.DECLS);
  1128. # line 669 "FUnparse.puma"
  1129.    Unparse (t->BODY_NODE.STATS);
  1130. # line 670 "FUnparse.puma"
  1131.    ind ();
  1132. # line 671 "FUnparse.puma"
  1133.    fprintf (f, "CONTAINS\n");
  1134. # line 672 "FUnparse.puma"
  1135.    Unparse (t->BODY_NODE.INTERNALS);
  1136. # line 673 "FUnparse.puma"
  1137.    ind ();
  1138. # line 674 "FUnparse.puma"
  1139.    fprintf (f, "END\n");
  1140.   }
  1141.    return;
  1142.  
  1143.   case kACF_LIST:
  1144. # line 677 "FUnparse.puma"
  1145.   {
  1146. # line 678 "FUnparse.puma"
  1147.    Unparse (t->ACF_LIST.Elem);
  1148. # line 679 "FUnparse.puma"
  1149.  if (t->ACF_LIST.Next != NoTree)
  1150.              Unparse (t->ACF_LIST.Next);
  1151.  
  1152.   }
  1153.    return;
  1154.  
  1155.   case kACF_EMPTY:
  1156. # line 684 "FUnparse.puma"
  1157.    return;
  1158.  
  1159.   case kACF_BASIC:
  1160. # line 687 "FUnparse.puma"
  1161.   {
  1162. # line 688 "FUnparse.puma"
  1163.    label_ind (t->ACF_BASIC.Label);
  1164. # line 689 "FUnparse.puma"
  1165.    Unparse (t->ACF_BASIC.BASIC_STMT);
  1166. # line 690 "FUnparse.puma"
  1167.    LCR (t->ACF_BASIC.Line);
  1168.   }
  1169.    return;
  1170.  
  1171.   case kACF_DUMMY:
  1172. # line 693 "FUnparse.puma"
  1173.   {
  1174. # line 694 "FUnparse.puma"
  1175.    label_ind (t->ACF_DUMMY.Label);
  1176. # line 695 "FUnparse.puma"
  1177.    fprintf (f, "CONTINUE");
  1178. # line 696 "FUnparse.puma"
  1179.    LCR (t->ACF_DUMMY.Line);
  1180.   }
  1181.    return;
  1182.  
  1183.   case kACF_WHILE:
  1184. # line 699 "FUnparse.puma"
  1185.   {
  1186. # line 700 "FUnparse.puma"
  1187.    label_ind (t->ACF_WHILE.Label);
  1188. # line 701 "FUnparse.puma"
  1189.    fprintf (f, "DO WHILE (");
  1190. # line 702 "FUnparse.puma"
  1191.    Unparse (t->ACF_WHILE.WHILE_EXP);
  1192. # line 703 "FUnparse.puma"
  1193.    fprintf (f, ")");
  1194. # line 704 "FUnparse.puma"
  1195.    LCR (t->ACF_WHILE.Line);
  1196. # line 705 "FUnparse.puma"
  1197.  indent = indent + 2;
  1198. # line 706 "FUnparse.puma"
  1199.    Unparse (t->ACF_WHILE.WHILE_BODY);
  1200. # line 707 "FUnparse.puma"
  1201.  indent = indent - 2;
  1202. # line 708 "FUnparse.puma"
  1203.    ind ();
  1204. # line 709 "FUnparse.puma"
  1205.    fprintf (f, "END DO\n");
  1206.   }
  1207.    return;
  1208.  
  1209.   case kACF_DO:
  1210. # line 712 "FUnparse.puma"
  1211.   {
  1212. # line 713 "FUnparse.puma"
  1213.    label_ind (t->ACF_DO.Label);
  1214. # line 714 "FUnparse.puma"
  1215.    fprintf (f, "DO ");
  1216. # line 715 "FUnparse.puma"
  1217.    Unparse (t->ACF_DO.DO_ID);
  1218. # line 716 "FUnparse.puma"
  1219.    fprintf (f, "=");
  1220. # line 717 "FUnparse.puma"
  1221.    UnparseDoRange (t->ACF_DO.DO_RANGE);
  1222. # line 718 "FUnparse.puma"
  1223.    LCR (t->ACF_DO.Line);
  1224. # line 719 "FUnparse.puma"
  1225.  indent = indent + IndentLength;
  1226. # line 720 "FUnparse.puma"
  1227.    Unparse (t->ACF_DO.DO_BODY);
  1228. # line 721 "FUnparse.puma"
  1229.  indent = indent - IndentLength;
  1230. # line 722 "FUnparse.puma"
  1231.    ind ();
  1232. # line 723 "FUnparse.puma"
  1233.    fprintf (f, "END DO\n");
  1234.   }
  1235.    return;
  1236.  
  1237.   case kACF_DOLOCAL:
  1238. # line 726 "FUnparse.puma"
  1239.   {
  1240. # line 727 "FUnparse.puma"
  1241.    fprintf (f, "!HPF$ INDEPENDENT, LOCAL_ACCESS\n");
  1242. # line 728 "FUnparse.puma"
  1243.    label_ind (t->ACF_DOLOCAL.Label);
  1244. # line 729 "FUnparse.puma"
  1245.    fprintf (f, "DO ");
  1246. # line 730 "FUnparse.puma"
  1247.    Unparse (t->ACF_DOLOCAL.DOLOCAL_ID);
  1248. # line 731 "FUnparse.puma"
  1249.    fprintf (f, "=");
  1250. # line 732 "FUnparse.puma"
  1251.    UnparseDoRange (t->ACF_DOLOCAL.DOLOCAL_RANGE);
  1252. # line 733 "FUnparse.puma"
  1253.    LCR (t->ACF_DOLOCAL.Line);
  1254. # line 734 "FUnparse.puma"
  1255.  indent = indent + IndentLength;
  1256. # line 735 "FUnparse.puma"
  1257.    Unparse (t->ACF_DOLOCAL.DOLOCAL_BODY);
  1258. # line 736 "FUnparse.puma"
  1259.  indent = indent - IndentLength;
  1260. # line 737 "FUnparse.puma"
  1261.    ind ();
  1262. # line 738 "FUnparse.puma"
  1263.    fprintf (f, "END DO\n");
  1264.   }
  1265.    return;
  1266.  
  1267.   case kACF_DOALL:
  1268. # line 741 "FUnparse.puma"
  1269.   {
  1270. # line 742 "FUnparse.puma"
  1271.    fprintf (f, "!HPF$ INDEPENDENT NEW(");
  1272. # line 743 "FUnparse.puma"
  1273.    Unparse (t->ACF_DOALL.DOALL_NEW);
  1274. # line 744 "FUnparse.puma"
  1275.    fprintf (f, ")\n");
  1276. # line 745 "FUnparse.puma"
  1277.    label_ind (t->ACF_DOALL.Label);
  1278. # line 746 "FUnparse.puma"
  1279.    fprintf (f, "DO ");
  1280. # line 747 "FUnparse.puma"
  1281.    Unparse (t->ACF_DOALL.DOALL_ID);
  1282. # line 748 "FUnparse.puma"
  1283.    fprintf (f, "=");
  1284. # line 749 "FUnparse.puma"
  1285.    UnparseDoRange (t->ACF_DOALL.DOALL_RANGE);
  1286. # line 750 "FUnparse.puma"
  1287.    LCR (t->ACF_DOALL.Line);
  1288. # line 751 "FUnparse.puma"
  1289.  indent = indent + IndentLength;
  1290. # line 752 "FUnparse.puma"
  1291.    Unparse (t->ACF_DOALL.DOALL_BODY);
  1292. # line 753 "FUnparse.puma"
  1293.  indent = indent - IndentLength;
  1294. # line 754 "FUnparse.puma"
  1295.    ind ();
  1296. # line 755 "FUnparse.puma"
  1297.    fprintf (f, "END DO\n");
  1298.   }
  1299.    return;
  1300.  
  1301.   case kACF_DOVEC:
  1302. # line 758 "FUnparse.puma"
  1303.   {
  1304. # line 759 "FUnparse.puma"
  1305.    fprintf (f, "cdir$ ivdep\n");
  1306. # line 760 "FUnparse.puma"
  1307.    label_ind (t->ACF_DOVEC.Label);
  1308. # line 761 "FUnparse.puma"
  1309.    fprintf (f, "DO ");
  1310. # line 762 "FUnparse.puma"
  1311.    Unparse (t->ACF_DOVEC.DOVEC_ID);
  1312. # line 763 "FUnparse.puma"
  1313.    fprintf (f, "=");
  1314. # line 764 "FUnparse.puma"
  1315.    UnparseDoRange (t->ACF_DOVEC.DOVEC_RANGE);
  1316. # line 765 "FUnparse.puma"
  1317.    LCR (t->ACF_DOVEC.Line);
  1318. # line 766 "FUnparse.puma"
  1319.  indent = indent + IndentLength;
  1320. # line 767 "FUnparse.puma"
  1321.    Unparse (t->ACF_DOVEC.DOVEC_BODY);
  1322. # line 768 "FUnparse.puma"
  1323.  indent = indent - IndentLength;
  1324. # line 769 "FUnparse.puma"
  1325.    ind ();
  1326. # line 770 "FUnparse.puma"
  1327.    fprintf (f, "END DO\n");
  1328.   }
  1329.    return;
  1330.  
  1331.   case kACF_FORALL:
  1332. # line 773 "FUnparse.puma"
  1333.   {
  1334. # line 774 "FUnparse.puma"
  1335.    label_ind (t->ACF_FORALL.Label);
  1336. # line 775 "FUnparse.puma"
  1337.    fprintf (f, "FORALL (");
  1338. # line 776 "FUnparse.puma"
  1339.    Unparse (t->ACF_FORALL.FORALL_ID);
  1340. # line 777 "FUnparse.puma"
  1341.    fprintf (f, "=");
  1342. # line 778 "FUnparse.puma"
  1343.    Unparse (t->ACF_FORALL.FORALL_RANGE);
  1344. # line 779 "FUnparse.puma"
  1345.    fprintf (f, ")");
  1346. # line 780 "FUnparse.puma"
  1347.    LCR (t->ACF_FORALL.Line);
  1348. # line 781 "FUnparse.puma"
  1349.  indent = indent + IndentLength;
  1350. # line 782 "FUnparse.puma"
  1351.    Unparse (t->ACF_FORALL.FORALL_BODY);
  1352. # line 783 "FUnparse.puma"
  1353.  indent = indent - IndentLength;
  1354. # line 784 "FUnparse.puma"
  1355.    ind ();
  1356. # line 785 "FUnparse.puma"
  1357.    fprintf (f, "END FORALL\n");
  1358.   }
  1359.    return;
  1360.  
  1361.   case kACF_LOOP:
  1362. # line 788 "FUnparse.puma"
  1363.   {
  1364. # line 789 "FUnparse.puma"
  1365.    label_ind (t->ACF_LOOP.Label);
  1366. # line 790 "FUnparse.puma"
  1367.    fprintf (f, "DO WHILE (.true.)");
  1368. # line 791 "FUnparse.puma"
  1369.    LCR (t->ACF_LOOP.Line);
  1370. # line 792 "FUnparse.puma"
  1371.  indent = indent + IndentLength;
  1372. # line 793 "FUnparse.puma"
  1373.    Unparse (t->ACF_LOOP.LOOP_BODY);
  1374. # line 794 "FUnparse.puma"
  1375.  indent = indent - IndentLength;
  1376. # line 795 "FUnparse.puma"
  1377.    ind ();
  1378. # line 796 "FUnparse.puma"
  1379.    fprintf (f, "END DO\n");
  1380.   }
  1381.    return;
  1382.  
  1383.   case kACF_IF:
  1384. # line 799 "FUnparse.puma"
  1385.   {
  1386. # line 800 "FUnparse.puma"
  1387.    label_ind (t->ACF_IF.Label);
  1388. # line 801 "FUnparse.puma"
  1389.    fprintf (f, "IF (");
  1390. # line 802 "FUnparse.puma"
  1391.    Unparse (t->ACF_IF.IF_EXP);
  1392. # line 803 "FUnparse.puma"
  1393.    fprintf (f, ") THEN");
  1394. # line 804 "FUnparse.puma"
  1395.    LCR (t->ACF_IF.Line);
  1396. # line 805 "FUnparse.puma"
  1397.  indent = indent + IndentLength;
  1398. # line 806 "FUnparse.puma"
  1399.    Unparse (t->ACF_IF.THEN_PART);
  1400. # line 807 "FUnparse.puma"
  1401.  indent = indent - IndentLength;
  1402. # line 808 "FUnparse.puma"
  1403.    UnparseElse (t->ACF_IF.ELSE_PART);
  1404. # line 809 "FUnparse.puma"
  1405.    ind ();
  1406. # line 810 "FUnparse.puma"
  1407.    fprintf (f, "END IF\n");
  1408.   }
  1409.    return;
  1410.  
  1411.   case kACF_WHERE:
  1412.   if (t->ACF_WHERE.FALSE_PART->Kind == kACF_EMPTY) {
  1413. # line 813 "FUnparse.puma"
  1414.   {
  1415. # line 814 "FUnparse.puma"
  1416.    label_ind (t->ACF_WHERE.Label);
  1417. # line 815 "FUnparse.puma"
  1418.    fprintf (f, "WHERE (");
  1419. # line 816 "FUnparse.puma"
  1420.    Unparse (t->ACF_WHERE.WHERE_EXP);
  1421. # line 817 "FUnparse.puma"
  1422.    fprintf (f, ")");
  1423. # line 818 "FUnparse.puma"
  1424.    LCR (t->ACF_WHERE.Line);
  1425. # line 819 "FUnparse.puma"
  1426.  indent = indent + IndentLength;
  1427. # line 820 "FUnparse.puma"
  1428.    Unparse (t->ACF_WHERE.TRUE_PART);
  1429. # line 821 "FUnparse.puma"
  1430.  indent = indent - IndentLength;
  1431. # line 822 "FUnparse.puma"
  1432.    ind ();
  1433. # line 823 "FUnparse.puma"
  1434.    fprintf (f, "END WHERE\n");
  1435.   }
  1436.    return;
  1437.  
  1438.   }
  1439. # line 826 "FUnparse.puma"
  1440.   {
  1441. # line 827 "FUnparse.puma"
  1442.    label_ind (t->ACF_WHERE.Label);
  1443. # line 828 "FUnparse.puma"
  1444.    fprintf (f, "WHERE (");
  1445. # line 829 "FUnparse.puma"
  1446.    Unparse (t->ACF_WHERE.WHERE_EXP);
  1447. # line 830 "FUnparse.puma"
  1448.    fprintf (f, ")");
  1449. # line 831 "FUnparse.puma"
  1450.    LCR (t->ACF_WHERE.Line);
  1451. # line 832 "FUnparse.puma"
  1452.  indent = indent + IndentLength;
  1453. # line 833 "FUnparse.puma"
  1454.    Unparse (t->ACF_WHERE.TRUE_PART);
  1455. # line 834 "FUnparse.puma"
  1456.  indent = indent - IndentLength;
  1457. # line 835 "FUnparse.puma"
  1458.    ind ();
  1459. # line 836 "FUnparse.puma"
  1460.    fprintf (f, " ELSEWHERE\n");
  1461. # line 837 "FUnparse.puma"
  1462.  indent = indent + IndentLength;
  1463. # line 838 "FUnparse.puma"
  1464.    Unparse (t->ACF_WHERE.FALSE_PART);
  1465. # line 839 "FUnparse.puma"
  1466.  indent = indent - IndentLength;
  1467. # line 840 "FUnparse.puma"
  1468.    ind ();
  1469. # line 841 "FUnparse.puma"
  1470.    fprintf (f, "END WHERE\n");
  1471.   }
  1472.    return;
  1473.  
  1474.   case kACF_CASE:
  1475. # line 844 "FUnparse.puma"
  1476.   {
  1477. # line 845 "FUnparse.puma"
  1478.    label_ind (t->ACF_CASE.Label);
  1479. # line 846 "FUnparse.puma"
  1480.    fprintf (f, "SELECT CASE (");
  1481. # line 847 "FUnparse.puma"
  1482.    Unparse (t->ACF_CASE.CASE_EXP);
  1483. # line 848 "FUnparse.puma"
  1484.    fprintf (f, ")");
  1485. # line 849 "FUnparse.puma"
  1486.    LCR (t->ACF_CASE.Line);
  1487. # line 850 "FUnparse.puma"
  1488.  indent = indent + 2;
  1489. # line 851 "FUnparse.puma"
  1490.    Unparse (t->ACF_CASE.CASE_ALTS);
  1491. # line 852 "FUnparse.puma"
  1492.    ind ();
  1493. # line 853 "FUnparse.puma"
  1494.    fprintf (f, "DEFAULT \n");
  1495. # line 854 "FUnparse.puma"
  1496.  indent = indent + 2;
  1497. # line 855 "FUnparse.puma"
  1498.    Unparse (t->ACF_CASE.CASE_OTHERWISE);
  1499. # line 856 "FUnparse.puma"
  1500.  indent = indent - 4;
  1501. # line 857 "FUnparse.puma"
  1502.    ind ();
  1503. # line 858 "FUnparse.puma"
  1504.    fprintf (f, "END SELECT\n");
  1505.   }
  1506.    return;
  1507.  
  1508.   case kACF_ON:
  1509. # line 861 "FUnparse.puma"
  1510.   {
  1511. # line 862 "FUnparse.puma"
  1512.    label_ind (0);
  1513. # line 863 "FUnparse.puma"
  1514.    fprintf (f, "! following stmt ON ");
  1515. # line 864 "FUnparse.puma"
  1516.    Unparse (t->ACF_ON.ON_VAR);
  1517. # line 865 "FUnparse.puma"
  1518.    fprintf (f, "\n");
  1519. # line 866 "FUnparse.puma"
  1520.  indent = indent + IndentLength;
  1521. # line 867 "FUnparse.puma"
  1522.    Unparse (t->ACF_ON.ON_STMT);
  1523. # line 868 "FUnparse.puma"
  1524.  indent = indent - IndentLength;
  1525.   }
  1526.    return;
  1527.  
  1528.   case kSELECTED_ACF_LIST:
  1529. # line 871 "FUnparse.puma"
  1530.   {
  1531. # line 872 "FUnparse.puma"
  1532.    Unparse (t->SELECTED_ACF_LIST.Elem);
  1533. # line 873 "FUnparse.puma"
  1534.    Unparse (t->SELECTED_ACF_LIST.Next);
  1535.   }
  1536.    return;
  1537.  
  1538.   case kSELECTED_ACF_EMPTY:
  1539. # line 876 "FUnparse.puma"
  1540.    return;
  1541.  
  1542.   case kSELECTED_ACF_NODE:
  1543.   if (t->SELECTED_ACF_NODE.SELECT_LIST->Kind == kBTE_LIST) {
  1544.   if (t->SELECTED_ACF_NODE.SELECT_LIST->BTE_LIST.Elem->Kind == kSLICE_EXP) {
  1545. # line 879 "FUnparse.puma"
  1546.   {
  1547. # line 880 "FUnparse.puma"
  1548.    ind ();
  1549. # line 881 "FUnparse.puma"
  1550.    fprintf (f, "CASE (");
  1551. # line 882 "FUnparse.puma"
  1552.  if (t->SELECTED_ACF_NODE.SELECT_LIST->BTE_LIST.Elem->SLICE_EXP.START->Kind != kDUMMY_EXP)
  1553.              Unparse (t->SELECTED_ACF_NODE.SELECT_LIST->BTE_LIST.Elem->SLICE_EXP.START);
  1554. # line 884 "FUnparse.puma"
  1555.    fprintf (f, ":");
  1556. # line 885 "FUnparse.puma"
  1557.  if (t->SELECTED_ACF_NODE.SELECT_LIST->BTE_LIST.Elem->SLICE_EXP.STOP->Kind != kDUMMY_EXP)
  1558.              Unparse (t->SELECTED_ACF_NODE.SELECT_LIST->BTE_LIST.Elem->SLICE_EXP.STOP);
  1559. # line 887 "FUnparse.puma"
  1560.    fprintf (f, ")\n");
  1561. # line 888 "FUnparse.puma"
  1562.  indent += 2;
  1563. # line 889 "FUnparse.puma"
  1564.    Unparse (t->SELECTED_ACF_NODE.SELECT_ACFS);
  1565. # line 890 "FUnparse.puma"
  1566.  indent -= 2;
  1567.   }
  1568.    return;
  1569.  
  1570.   }
  1571. # line 893 "FUnparse.puma"
  1572.   {
  1573. # line 894 "FUnparse.puma"
  1574.    ind ();
  1575. # line 895 "FUnparse.puma"
  1576.    fprintf (f, "CASE (");
  1577. # line 896 "FUnparse.puma"
  1578.    Unparse (t->SELECTED_ACF_NODE.SELECT_LIST->BTE_LIST.Elem);
  1579. # line 897 "FUnparse.puma"
  1580.    fprintf (f, ")\n");
  1581. # line 898 "FUnparse.puma"
  1582.  indent += 2;
  1583. # line 899 "FUnparse.puma"
  1584.    Unparse (t->SELECTED_ACF_NODE.SELECT_ACFS);
  1585. # line 900 "FUnparse.puma"
  1586.  indent -= 2;
  1587.   }
  1588.    return;
  1589.  
  1590.   }
  1591.   break;
  1592.   case kACF_ENTRY:
  1593.   if (t->ACF_ENTRY.ENTRY_DECL->Kind == kFUNC_DECL) {
  1594. # line 903 "FUnparse.puma"
  1595.   {
  1596. # line 905 "FUnparse.puma"
  1597.    ind ();
  1598. # line 906 "FUnparse.puma"
  1599.    GetString (t->ACF_ENTRY.ENTRY_DECL->FUNC_DECL.Name, string);
  1600. # line 907 "FUnparse.puma"
  1601.    fprintf (f, "ENTRY %s (", string);
  1602. # line 908 "FUnparse.puma"
  1603.    Unparse (t->ACF_ENTRY.ENTRY_DECL->FUNC_DECL.FORMALS);
  1604. # line 909 "FUnparse.puma"
  1605.    fprintf (f, ")");
  1606. # line 910 "FUnparse.puma"
  1607.    LCR (t->ACF_ENTRY.Line);
  1608.   }
  1609.    return;
  1610.  
  1611.   }
  1612.   if (t->ACF_ENTRY.ENTRY_DECL->Kind == kPROC_DECL) {
  1613. # line 913 "FUnparse.puma"
  1614.   {
  1615. # line 914 "FUnparse.puma"
  1616.    ind ();
  1617. # line 915 "FUnparse.puma"
  1618.    GetString (t->ACF_ENTRY.ENTRY_DECL->PROC_DECL.Name, string);
  1619. # line 916 "FUnparse.puma"
  1620.    fprintf (f, "ENTRY %s (", string);
  1621. # line 917 "FUnparse.puma"
  1622.    Unparse (t->ACF_ENTRY.ENTRY_DECL->PROC_DECL.FORMALS);
  1623. # line 918 "FUnparse.puma"
  1624.    fprintf (f, ")");
  1625. # line 919 "FUnparse.puma"
  1626.    LCR (t->ACF_ENTRY.Line);
  1627.   }
  1628.    return;
  1629.  
  1630.   }
  1631.   break;
  1632.   }
  1633.  
  1634.  
  1635.   switch (t->Kind) {
  1636.   case kACF_NODE:
  1637.   case kACF_WHERE:
  1638.   case kACF_SWITCH:
  1639.   case kACF_ALTER:
  1640.   case kACF_REPEAT:
  1641.   case kACF_WITH:
  1642.   case kACF_BODY:
  1643.   case kACF_FLOW_GRAPH:
  1644.   case kACF_ENTRY:
  1645. # line 925 "FUnparse.puma"
  1646.   {
  1647. # line 926 "FUnparse.puma"
  1648.    label_ind (t->ACF_NODE.Label);
  1649. # line 927 "FUnparse.puma"
  1650.    fprintf (f, "Statement");
  1651. # line 928 "FUnparse.puma"
  1652.    LCR (t->ACF_NODE.Line);
  1653.   }
  1654.    return;
  1655.  
  1656.   case kASSIGN_STMT:
  1657. # line 939 "FUnparse.puma"
  1658.   {
  1659. # line 940 "FUnparse.puma"
  1660.    Unparse (t->ASSIGN_STMT.ASSIGN_VAR);
  1661. # line 941 "FUnparse.puma"
  1662.    fprintf (f, " = ");
  1663. # line 942 "FUnparse.puma"
  1664.    Unparse (t->ASSIGN_STMT.ASSIGN_EXP);
  1665.   }
  1666.    return;
  1667.  
  1668.   case kPTR_ASSIGN_STMT:
  1669. # line 945 "FUnparse.puma"
  1670.   {
  1671. # line 946 "FUnparse.puma"
  1672.    Unparse (t->PTR_ASSIGN_STMT.ASSIGN_VAR);
  1673. # line 947 "FUnparse.puma"
  1674.    fprintf (f, " => ");
  1675. # line 948 "FUnparse.puma"
  1676.    Unparse (t->PTR_ASSIGN_STMT.ASSIGN_EXP);
  1677.   }
  1678.    return;
  1679.  
  1680.   case kLABEL_ASSIGN_STMT:
  1681. # line 951 "FUnparse.puma"
  1682.   {
  1683. # line 952 "FUnparse.puma"
  1684.    fprintf (f, "ASSIGN %d TO ", t->LABEL_ASSIGN_STMT.assign_label);
  1685. # line 953 "FUnparse.puma"
  1686.    Unparse (t->LABEL_ASSIGN_STMT.LABEL_VAR);
  1687.   }
  1688.    return;
  1689.  
  1690.   case kFORMAT_STMT:
  1691. # line 956 "FUnparse.puma"
  1692.   {
  1693. # line 957 "FUnparse.puma"
  1694.    fprintf (f, "FORMAT ");
  1695. # line 958 "FUnparse.puma"
  1696.    FormatUnparse (t->FORMAT_STMT.FORMAT_PARAMS);
  1697.   }
  1698.    return;
  1699.  
  1700.   case kSTOP_STMT:
  1701.   if (t->STOP_STMT.STOP_CONST->Kind == kDUMMY_EXP) {
  1702. # line 961 "FUnparse.puma"
  1703.   {
  1704. # line 962 "FUnparse.puma"
  1705.    fprintf (f, "STOP");
  1706.   }
  1707.    return;
  1708.  
  1709.   }
  1710. # line 965 "FUnparse.puma"
  1711.   {
  1712. # line 966 "FUnparse.puma"
  1713.    fprintf (f, "STOP ");
  1714. # line 967 "FUnparse.puma"
  1715.    Unparse (t->STOP_STMT.STOP_CONST);
  1716.   }
  1717.    return;
  1718.  
  1719.   case kEXIT_STMT:
  1720. # line 970 "FUnparse.puma"
  1721.   {
  1722. # line 971 "FUnparse.puma"
  1723.  if (t->EXIT_STMT.loopid == NoId ())
  1724.              fprintf (f,"EXIT");
  1725.            else
  1726.              { GetString (t->EXIT_STMT.loopid, string);
  1727.                fprintf (f,"EXIT %s", string);
  1728.              }
  1729.  
  1730.   }
  1731.    return;
  1732.  
  1733.   case kCYCLE_STMT:
  1734. # line 980 "FUnparse.puma"
  1735.   {
  1736. # line 981 "FUnparse.puma"
  1737.  if (t->CYCLE_STMT.loopid == NoId ())
  1738.              fprintf (f,"CYCLE");
  1739.            else
  1740.              { GetString (t->CYCLE_STMT.loopid, string);
  1741.                fprintf (f,"CYCLE %s", string);
  1742.              }
  1743.  
  1744.   }
  1745.    return;
  1746.  
  1747.   case kRETURN_STMT:
  1748.   if (t->RETURN_STMT.RETURN_EXP->Kind == kDUMMY_EXP) {
  1749. # line 990 "FUnparse.puma"
  1750.   {
  1751. # line 991 "FUnparse.puma"
  1752.    fprintf (f, "RETURN");
  1753.   }
  1754.    return;
  1755.  
  1756.   }
  1757. # line 994 "FUnparse.puma"
  1758.   {
  1759. # line 995 "FUnparse.puma"
  1760.    fprintf (f, "RETURN ");
  1761. # line 996 "FUnparse.puma"
  1762.    Unparse (t->RETURN_STMT.RETURN_EXP);
  1763.   }
  1764.    return;
  1765.  
  1766.   case kASS_GOTO_STMT:
  1767.   if (t->ASS_GOTO_STMT.LABELS->Kind == kLABEL_EMPTY) {
  1768. # line 999 "FUnparse.puma"
  1769.   {
  1770. # line 1000 "FUnparse.puma"
  1771.    fprintf (f, "GOTO ");
  1772. # line 1001 "FUnparse.puma"
  1773.    Unparse (t->ASS_GOTO_STMT.GOTO_VAR);
  1774.   }
  1775.    return;
  1776.  
  1777.   }
  1778. # line 1004 "FUnparse.puma"
  1779.   {
  1780. # line 1005 "FUnparse.puma"
  1781.    fprintf (f, "GOTO ");
  1782. # line 1006 "FUnparse.puma"
  1783.    Unparse (t->ASS_GOTO_STMT.GOTO_VAR);
  1784. # line 1007 "FUnparse.puma"
  1785.    fprintf (f, " (");
  1786. # line 1008 "FUnparse.puma"
  1787.    Unparse (t->ASS_GOTO_STMT.LABELS);
  1788. # line 1009 "FUnparse.puma"
  1789.    fprintf (f, ")");
  1790.   }
  1791.    return;
  1792.  
  1793.   case kGOTO_STMT:
  1794. # line 1012 "FUnparse.puma"
  1795.   {
  1796. # line 1013 "FUnparse.puma"
  1797.    fprintf (f, "GOTO %d", t->GOTO_STMT.GOTO_LABEL);
  1798.   }
  1799.    return;
  1800.  
  1801.   case kCOMP_GOTO_STMT:
  1802. # line 1016 "FUnparse.puma"
  1803.   {
  1804. # line 1017 "FUnparse.puma"
  1805.    fprintf (f, "GOTO (");
  1806. # line 1018 "FUnparse.puma"
  1807.    Unparse (t->COMP_GOTO_STMT.GOTO_LABELS);
  1808. # line 1019 "FUnparse.puma"
  1809.    fprintf (f, ") ");
  1810. # line 1020 "FUnparse.puma"
  1811.    Unparse (t->COMP_GOTO_STMT.GOTO_EXP);
  1812.   }
  1813.    return;
  1814.  
  1815.   case kLABEL_LIST:
  1816.   if (t->LABEL_LIST.Next->Kind == kLABEL_EMPTY) {
  1817. # line 1023 "FUnparse.puma"
  1818.   {
  1819. # line 1024 "FUnparse.puma"
  1820.    fprintf (f, "%d", t->LABEL_LIST.Elem);
  1821.   }
  1822.    return;
  1823.  
  1824.   }
  1825. # line 1027 "FUnparse.puma"
  1826.   {
  1827. # line 1028 "FUnparse.puma"
  1828.    fprintf (f, "%d, ", t->LABEL_LIST.Elem);
  1829. # line 1029 "FUnparse.puma"
  1830.    Unparse (t->LABEL_LIST.Next);
  1831.   }
  1832.    return;
  1833.  
  1834.   case kCOMP_IF_STMT:
  1835. # line 1032 "FUnparse.puma"
  1836.   {
  1837. # line 1033 "FUnparse.puma"
  1838.    fprintf (f, "IF (");
  1839. # line 1034 "FUnparse.puma"
  1840.    Unparse (t->COMP_IF_STMT.IF_EXP);
  1841. # line 1035 "FUnparse.puma"
  1842.    fprintf (f, ") ");
  1843. # line 1036 "FUnparse.puma"
  1844.    fprintf (f, "%d , %d , %d", t->COMP_IF_STMT.IF_LT_LABEL, t->COMP_IF_STMT.IF_EQ_LABEL, t->COMP_IF_STMT.IF_GT_LABEL);
  1845.   }
  1846.    return;
  1847.  
  1848.   case kREDUCE_STMT:
  1849. # line 1039 "FUnparse.puma"
  1850.   {
  1851. # line 1040 "FUnparse.puma"
  1852.    GetString (t->REDUCE_STMT.RED_FUNC->PROC_OBJ.Ident, string);
  1853. # line 1041 "FUnparse.puma"
  1854.    fprintf (f, "REDUCE (%s,", string);
  1855. # line 1042 "FUnparse.puma"
  1856.    ParamUnparse (t->REDUCE_STMT.RED_PARAMS);
  1857. # line 1043 "FUnparse.puma"
  1858.    fprintf (f, ")");
  1859.   }
  1860.    return;
  1861.  
  1862.   case kCALL_STMT:
  1863. # line 1046 "FUnparse.puma"
  1864.   {
  1865. # line 1047 "FUnparse.puma"
  1866.    GetString (t->CALL_STMT.CALL_ID->PROC_OBJ.Ident, string);
  1867. # line 1048 "FUnparse.puma"
  1868.    fprintf (f, "call %s (", string);
  1869. # line 1049 "FUnparse.puma"
  1870.    ParamUnparse (t->CALL_STMT.CALL_PARAMS);
  1871. # line 1050 "FUnparse.puma"
  1872.    fprintf (f, ")");
  1873.   }
  1874.    return;
  1875.  
  1876.   case kALLOCATE_STMT:
  1877. # line 1053 "FUnparse.puma"
  1878.   {
  1879. # line 1054 "FUnparse.puma"
  1880.    fprintf (f, "ALLOCATE (");
  1881. # line 1055 "FUnparse.puma"
  1882.    Unparse (t->ALLOCATE_STMT.PARAMS);
  1883. # line 1056 "FUnparse.puma"
  1884.    fprintf (f, ")");
  1885.   }
  1886.    return;
  1887.  
  1888.   case kDEALLOCATE_STMT:
  1889. # line 1059 "FUnparse.puma"
  1890.   {
  1891. # line 1060 "FUnparse.puma"
  1892.    fprintf (f, "DEALLOCATE (");
  1893. # line 1061 "FUnparse.puma"
  1894.    Unparse (t->DEALLOCATE_STMT.PARAMS);
  1895. # line 1062 "FUnparse.puma"
  1896.    fprintf (f, ")");
  1897.   }
  1898.    return;
  1899.  
  1900.   case kNULLIFY_STMT:
  1901. # line 1065 "FUnparse.puma"
  1902.   {
  1903. # line 1066 "FUnparse.puma"
  1904.    fprintf (f, "NULLIFY (");
  1905. # line 1067 "FUnparse.puma"
  1906.    Unparse (t->NULLIFY_STMT.PARAMS);
  1907. # line 1068 "FUnparse.puma"
  1908.    fprintf (f, ")");
  1909.   }
  1910.    return;
  1911.  
  1912.   case kALIGN_STMT:
  1913. # line 1071 "FUnparse.puma"
  1914.   {
  1915. # line 1072 "FUnparse.puma"
  1916.    fprintf (f, "REALIGN ");
  1917. # line 1073 "FUnparse.puma"
  1918.    Unparse (t->ALIGN_STMT.ALIGNEE);
  1919. # line 1074 "FUnparse.puma"
  1920.    fprintf (f, " WITH ");
  1921. # line 1075 "FUnparse.puma"
  1922.    AlignSpecUnparse (t->ALIGN_STMT.ALIGN_SPEC);
  1923.   }
  1924.    return;
  1925.  
  1926.   case kDISTRIBUTE_STMT:
  1927. # line 1078 "FUnparse.puma"
  1928.   {
  1929. # line 1079 "FUnparse.puma"
  1930.    fprintf (f, "REDISTRIBUTE ");
  1931. # line 1080 "FUnparse.puma"
  1932.    Unparse (t->DISTRIBUTE_STMT.DISTRIBUTEE);
  1933. # line 1081 "FUnparse.puma"
  1934.    LayoutUnparse (t->DISTRIBUTE_STMT.DISTRIBUTION);
  1935. # line 1082 "FUnparse.puma"
  1936.  if (t->DISTRIBUTE_STMT.target != NoId())
  1937.             { GetString (t->DISTRIBUTE_STMT.target, string);
  1938.               fprintf (f," ONTO %s", string);
  1939.             }
  1940.  
  1941.   }
  1942.    return;
  1943.  
  1944.   case kIO_STMT:
  1945.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("PRINT", 5))) {
  1946.   if (t->IO_STMT.IO_ITEMS->Kind == kBTP_EMPTY) {
  1947. # line 1095 "FUnparse.puma"
  1948.   {
  1949. # line 1097 "FUnparse.puma"
  1950.  fprintf (f,"PRINT ");
  1951.           Unparse (t->IO_STMT.IO_SPECS);
  1952.  
  1953.   }
  1954.    return;
  1955.  
  1956.   }
  1957.   }
  1958.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("PRINT", 5))) {
  1959. # line 1102 "FUnparse.puma"
  1960.   {
  1961. # line 1103 "FUnparse.puma"
  1962.  fprintf (f,"PRINT ");
  1963.           Unparse (t->IO_STMT.IO_SPECS);
  1964.           fprintf (f,",");
  1965.  
  1966.           Unparse (t->IO_STMT.IO_ITEMS);
  1967.  
  1968.   }
  1969.    return;
  1970.  
  1971.   }
  1972.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("READ", 4))) {
  1973.   if (t->IO_STMT.IO_SPECS->Kind == kBTP_LIST) {
  1974.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Elem->Kind == kVAR_PARAM) {
  1975.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Elem->VAR_PARAM.V->Kind == kADDR) {
  1976.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Elem->VAR_PARAM.V->ADDR.E->Kind == kDUMMY_EXP) {
  1977.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Next->Kind == kBTP_EMPTY) {
  1978. # line 1111 "FUnparse.puma"
  1979.   {
  1980. # line 1113 "FUnparse.puma"
  1981.  fprintf (f,"READ *, ");
  1982.           Unparse (t->IO_STMT.IO_ITEMS);
  1983.  
  1984.   }
  1985.    return;
  1986.  
  1987.   }
  1988.   }
  1989.   }
  1990.   }
  1991.   }
  1992.   }
  1993.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("READ", 4))) {
  1994.   if (t->IO_STMT.IO_SPECS->Kind == kBTP_LIST) {
  1995.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Elem->Kind == kVALUE_PARAM) {
  1996.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Elem->VALUE_PARAM.E->Kind == kDUMMY_EXP) {
  1997.   if (t->IO_STMT.IO_SPECS->BTP_LIST.Next->Kind == kBTP_EMPTY) {
  1998. # line 1118 "FUnparse.puma"
  1999.   {
  2000. # line 1120 "FUnparse.puma"
  2001.  fprintf (f,"READ *, ");
  2002.           Unparse (t->IO_STMT.IO_ITEMS);
  2003.  
  2004.   }
  2005.    return;
  2006.  
  2007.   }
  2008.   }
  2009.   }
  2010.   }
  2011.   }
  2012.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("READ", 4))) {
  2013. # line 1125 "FUnparse.puma"
  2014.   {
  2015. # line 1126 "FUnparse.puma"
  2016.  fprintf (f,"READ (");
  2017.           Unparse (t->IO_STMT.IO_SPECS);
  2018.           fprintf (f,") ");
  2019.           Unparse (t->IO_STMT.IO_ITEMS);
  2020.  
  2021.   }
  2022.    return;
  2023.  
  2024.   }
  2025.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("WRITE", 5))) {
  2026. # line 1133 "FUnparse.puma"
  2027.   {
  2028. # line 1134 "FUnparse.puma"
  2029.  fprintf (f,"WRITE (");
  2030.           Unparse (t->IO_STMT.IO_SPECS);
  2031.           fprintf (f,") ");
  2032.           Unparse (t->IO_STMT.IO_ITEMS);
  2033.  
  2034.   }
  2035.    return;
  2036.  
  2037.   }
  2038.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("OPEN", 4))) {
  2039. # line 1141 "FUnparse.puma"
  2040.   {
  2041. # line 1142 "FUnparse.puma"
  2042.  fprintf (f,"OPEN (");
  2043.           Unparse (t->IO_STMT.IO_SPECS);
  2044.           fprintf (f,") ");
  2045.           Unparse (t->IO_STMT.IO_ITEMS);
  2046.  
  2047.   }
  2048.    return;
  2049.  
  2050.   }
  2051.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("CLOSE", 5))) {
  2052. # line 1149 "FUnparse.puma"
  2053.   {
  2054. # line 1150 "FUnparse.puma"
  2055.  fprintf (f,"CLOSE (");
  2056.           Unparse (t->IO_STMT.IO_SPECS);
  2057.           fprintf (f,") ");
  2058.           Unparse (t->IO_STMT.IO_ITEMS);
  2059.  
  2060.   }
  2061.    return;
  2062.  
  2063.   }
  2064.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("REWIND", 6))) {
  2065. # line 1157 "FUnparse.puma"
  2066.   {
  2067. # line 1158 "FUnparse.puma"
  2068.  fprintf (f,"REWIND (");
  2069.           Unparse (t->IO_STMT.IO_SPECS);
  2070.           fprintf (f,") ");
  2071.           Unparse (t->IO_STMT.IO_ITEMS);
  2072.  
  2073.   }
  2074.    return;
  2075.  
  2076.   }
  2077.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("BACKSPACE", 9))) {
  2078. # line 1165 "FUnparse.puma"
  2079.   {
  2080. # line 1166 "FUnparse.puma"
  2081.  fprintf (f,"BACKSPACE (");
  2082.           Unparse (t->IO_STMT.IO_SPECS);
  2083.           fprintf (f,") ");
  2084.           Unparse (t->IO_STMT.IO_ITEMS);
  2085.  
  2086.   }
  2087.    return;
  2088.  
  2089.   }
  2090.   if (equaltIdent (t->IO_STMT.ID->PROC_OBJ.Ident, MakeIdent ("INQUIRE", 7))) {
  2091. # line 1173 "FUnparse.puma"
  2092.   {
  2093. # line 1174 "FUnparse.puma"
  2094.  fprintf (f,"INQUIRE (");
  2095.           Unparse (t->IO_STMT.IO_SPECS);
  2096.           fprintf (f,") ");
  2097.           Unparse (t->IO_STMT.IO_ITEMS);
  2098.  
  2099.   }
  2100.    return;
  2101.  
  2102.   }
  2103. # line 1181 "FUnparse.puma"
  2104.   {
  2105. # line 1182 "FUnparse.puma"
  2106.    GetString (t->IO_STMT.ID->PROC_OBJ.Ident, string);
  2107. # line 1183 "FUnparse.puma"
  2108.  fprintf (f,"%s is unknown io-statement",string);
  2109.  
  2110.   }
  2111.    return;
  2112.  
  2113.   case kBTP_LIST:
  2114.   if (t->BTP_LIST.Next->Kind == kBTP_LIST) {
  2115. # line 1193 "FUnparse.puma"
  2116.   {
  2117. # line 1194 "FUnparse.puma"
  2118.    Unparse (t->BTP_LIST.Elem);
  2119. # line 1195 "FUnparse.puma"
  2120.    fprintf (f, ",");
  2121. # line 1196 "FUnparse.puma"
  2122.    Unparse (t->BTP_LIST.Next);
  2123.   }
  2124.    return;
  2125.  
  2126.   }
  2127.   if (t->BTP_LIST.Next->Kind == kBTP_EMPTY) {
  2128. # line 1199 "FUnparse.puma"
  2129.   {
  2130. # line 1200 "FUnparse.puma"
  2131.    Unparse (t->BTP_LIST.Elem);
  2132.   }
  2133.    return;
  2134.  
  2135.   }
  2136.   break;
  2137.   case kBTP_EMPTY:
  2138. # line 1203 "FUnparse.puma"
  2139.    return;
  2140.  
  2141.   case kNAMED_PARAM:
  2142. # line 1206 "FUnparse.puma"
  2143.   {
  2144. # line 1207 "FUnparse.puma"
  2145.    GetString (t->NAMED_PARAM.Name, string);
  2146. # line 1208 "FUnparse.puma"
  2147.    fprintf (f, "%s=", string);
  2148. # line 1209 "FUnparse.puma"
  2149.    Unparse (t->NAMED_PARAM.VAL);
  2150.   }
  2151.    return;
  2152.  
  2153.   case kVAR_PARAM:
  2154. # line 1212 "FUnparse.puma"
  2155.   {
  2156. # line 1213 "FUnparse.puma"
  2157.    Unparse (t->VAR_PARAM.V);
  2158.   }
  2159.    return;
  2160.  
  2161.   case kVALUE_PARAM:
  2162. # line 1216 "FUnparse.puma"
  2163.   {
  2164. # line 1217 "FUnparse.puma"
  2165.    Unparse (t->VALUE_PARAM.E);
  2166.   }
  2167.    return;
  2168.  
  2169.   case kRETURN_PARAM:
  2170. # line 1220 "FUnparse.puma"
  2171.   {
  2172. # line 1221 "FUnparse.puma"
  2173.    fprintf (f, "*%d", t->RETURN_PARAM.label);
  2174.   }
  2175.    return;
  2176.  
  2177.   case kPROC_PARAM:
  2178. # line 1224 "FUnparse.puma"
  2179.   {
  2180. # line 1225 "FUnparse.puma"
  2181.    Unparse (t->PROC_PARAM.P);
  2182.   }
  2183.    return;
  2184.  
  2185.   case kFUNC_PARAM:
  2186. # line 1228 "FUnparse.puma"
  2187.   {
  2188. # line 1229 "FUnparse.puma"
  2189.    Unparse (t->FUNC_PARAM.F);
  2190.   }
  2191.    return;
  2192.  
  2193.   case kPROC_OBJ:
  2194. # line 1232 "FUnparse.puma"
  2195.   {
  2196. # line 1233 "FUnparse.puma"
  2197.    GetString (t->PROC_OBJ.Ident, string);
  2198. # line 1234 "FUnparse.puma"
  2199.    fprintf (f, "%s", string);
  2200.   }
  2201.    return;
  2202.  
  2203.   case kBTE_LIST:
  2204.   if (t->BTE_LIST.Next->Kind == kBTE_EMPTY) {
  2205. # line 1243 "FUnparse.puma"
  2206.   {
  2207. # line 1244 "FUnparse.puma"
  2208.    Unparse (t->BTE_LIST.Elem);
  2209.   }
  2210.    return;
  2211.  
  2212.   }
  2213. # line 1247 "FUnparse.puma"
  2214.   {
  2215. # line 1248 "FUnparse.puma"
  2216.    Unparse (t->BTE_LIST.Elem);
  2217. # line 1249 "FUnparse.puma"
  2218.    fprintf (f, ",");
  2219. # line 1250 "FUnparse.puma"
  2220.    Unparse (t->BTE_LIST.Next);
  2221.   }
  2222.    return;
  2223.  
  2224.   case kBTE_EMPTY:
  2225. # line 1253 "FUnparse.puma"
  2226.    return;
  2227.  
  2228.   case kDUMMY_EXP:
  2229. # line 1256 "FUnparse.puma"
  2230.   {
  2231. # line 1256 "FUnparse.puma"
  2232.    ExpUnparse (t, 0, 0);
  2233.   }
  2234.    return;
  2235.  
  2236.   case kCONST_EXP:
  2237. # line 1257 "FUnparse.puma"
  2238.   {
  2239. # line 1257 "FUnparse.puma"
  2240.    ExpUnparse (t, 0, 0);
  2241.   }
  2242.    return;
  2243.  
  2244.   case kVAR_EXP:
  2245. # line 1258 "FUnparse.puma"
  2246.   {
  2247. # line 1258 "FUnparse.puma"
  2248.    ExpUnparse (t, 0, 0);
  2249.   }
  2250.    return;
  2251.  
  2252.   case kOP_EXP:
  2253. # line 1259 "FUnparse.puma"
  2254.   {
  2255. # line 1259 "FUnparse.puma"
  2256.    ExpUnparse (t, 0, 0);
  2257.   }
  2258.    return;
  2259.  
  2260.   case kOP1_EXP:
  2261. # line 1260 "FUnparse.puma"
  2262.   {
  2263. # line 1260 "FUnparse.puma"
  2264.    ExpUnparse (t, 0, 0);
  2265.   }
  2266.    return;
  2267.  
  2268.   case kTYPE_EXP:
  2269. # line 1261 "FUnparse.puma"
  2270.   {
  2271. # line 1261 "FUnparse.puma"
  2272.    ExpUnparse (t, 0, 0);
  2273.   }
  2274.    return;
  2275.  
  2276.   case kARRAY_EXP:
  2277. # line 1262 "FUnparse.puma"
  2278.   {
  2279. # line 1262 "FUnparse.puma"
  2280.    ExpUnparse (t, 0, 0);
  2281.   }
  2282.    return;
  2283.  
  2284.   case kSLICE_EXP:
  2285. # line 1263 "FUnparse.puma"
  2286.   {
  2287. # line 1263 "FUnparse.puma"
  2288.    ExpUnparse (t, 0, 0);
  2289.   }
  2290.    return;
  2291.  
  2292.   case kFUNC_CALL_EXP:
  2293. # line 1264 "FUnparse.puma"
  2294.   {
  2295. # line 1264 "FUnparse.puma"
  2296.    ExpUnparse (t, 0, 0);
  2297.   }
  2298.    return;
  2299.  
  2300.   case kDO_EXP:
  2301. # line 1265 "FUnparse.puma"
  2302.   {
  2303. # line 1265 "FUnparse.puma"
  2304.    ExpUnparse (t, 0, 0);
  2305.   }
  2306.    return;
  2307.  
  2308.   case kNAMED_EXP:
  2309. # line 1266 "FUnparse.puma"
  2310.   {
  2311. # line 1266 "FUnparse.puma"
  2312.    ExpUnparse (t, 0, 0);
  2313.   }
  2314.    return;
  2315.  
  2316.   case kBTV_LIST:
  2317.   if (t->BTV_LIST.Next->Kind == kBTV_LIST) {
  2318. # line 1274 "FUnparse.puma"
  2319.   {
  2320. # line 1275 "FUnparse.puma"
  2321.    Unparse (t->BTV_LIST.Elem);
  2322. # line 1276 "FUnparse.puma"
  2323.    fprintf (f, ",");
  2324. # line 1277 "FUnparse.puma"
  2325.    Unparse (t->BTV_LIST.Next);
  2326.   }
  2327.    return;
  2328.  
  2329.   }
  2330.   if (t->BTV_LIST.Next->Kind == kBTV_EMPTY) {
  2331. # line 1280 "FUnparse.puma"
  2332.   {
  2333. # line 1281 "FUnparse.puma"
  2334.    Unparse (t->BTV_LIST.Elem);
  2335.   }
  2336.    return;
  2337.  
  2338.   }
  2339.   break;
  2340.   case kBTV_EMPTY:
  2341. # line 1284 "FUnparse.puma"
  2342.    return;
  2343.  
  2344.   case kLOOP_VAR:
  2345. # line 1287 "FUnparse.puma"
  2346.   {
  2347. # line 1288 "FUnparse.puma"
  2348.    Unparse (t->LOOP_VAR.LOOP_VARNAME);
  2349.   }
  2350.    return;
  2351.  
  2352.   case kUSED_VAR:
  2353. # line 1291 "FUnparse.puma"
  2354.   {
  2355. # line 1292 "FUnparse.puma"
  2356.    Unparse (t->USED_VAR.VARNAME);
  2357.   }
  2358.    return;
  2359.  
  2360.   case kINDEXED_VAR:
  2361. # line 1295 "FUnparse.puma"
  2362.   {
  2363. # line 1296 "FUnparse.puma"
  2364.    Unparse (t->INDEXED_VAR.IND_VAR);
  2365. # line 1297 "FUnparse.puma"
  2366.    fprintf (f, "(");
  2367. # line 1298 "FUnparse.puma"
  2368.    Unparse (t->INDEXED_VAR.IND_EXPS);
  2369. # line 1299 "FUnparse.puma"
  2370.    fprintf (f, ")");
  2371.   }
  2372.    return;
  2373.  
  2374.   case kSUBSTRING_VAR:
  2375. # line 1302 "FUnparse.puma"
  2376.   {
  2377. # line 1303 "FUnparse.puma"
  2378.    Unparse (t->SUBSTRING_VAR.IND_VAR);
  2379. # line 1304 "FUnparse.puma"
  2380.    fprintf (f, "(");
  2381. # line 1305 "FUnparse.puma"
  2382.    Unparse (t->SUBSTRING_VAR.IND_EXP);
  2383. # line 1306 "FUnparse.puma"
  2384.    fprintf (f, ")");
  2385.   }
  2386.    return;
  2387.  
  2388.   case kADDR:
  2389. # line 1309 "FUnparse.puma"
  2390.   {
  2391. # line 1310 "FUnparse.puma"
  2392.    Unparse (t->ADDR.E);
  2393.   }
  2394.    return;
  2395.  
  2396.   case kSELECTED_VAR:
  2397. # line 1313 "FUnparse.puma"
  2398.   {
  2399. # line 1314 "FUnparse.puma"
  2400.    Unparse (t->SELECTED_VAR.SELEC_VAR);
  2401. # line 1315 "FUnparse.puma"
  2402.    fprintf (f, " %% ");
  2403. # line 1316 "FUnparse.puma"
  2404.    Unparse (t->SELECTED_VAR.SELECTOR);
  2405.   }
  2406.    return;
  2407.  
  2408.   case kDO_VAR:
  2409.   if (t->DO_VAR.RANGE->SLICE_EXP.INC->Kind == kDUMMY_EXP) {
  2410. # line 1319 "FUnparse.puma"
  2411.   {
  2412. # line 1320 "FUnparse.puma"
  2413.    fprintf (f, "(");
  2414. # line 1321 "FUnparse.puma"
  2415.    Unparse (t->DO_VAR.BODY);
  2416. # line 1322 "FUnparse.puma"
  2417.    fprintf (f, ", ");
  2418. # line 1323 "FUnparse.puma"
  2419.    Unparse (t->DO_VAR.DO_ID);
  2420. # line 1324 "FUnparse.puma"
  2421.    fprintf (f, "=");
  2422. # line 1325 "FUnparse.puma"
  2423.    Unparse (t->DO_VAR.RANGE->SLICE_EXP.START);
  2424. # line 1326 "FUnparse.puma"
  2425.    fprintf (f, ",");
  2426. # line 1327 "FUnparse.puma"
  2427.    Unparse (t->DO_VAR.RANGE->SLICE_EXP.STOP);
  2428. # line 1328 "FUnparse.puma"
  2429.    fprintf (f, ")");
  2430.   }
  2431.    return;
  2432.  
  2433.   }
  2434. # line 1331 "FUnparse.puma"
  2435.   {
  2436. # line 1332 "FUnparse.puma"
  2437.    fprintf (f, "(");
  2438. # line 1333 "FUnparse.puma"
  2439.    Unparse (t->DO_VAR.BODY);
  2440. # line 1334 "FUnparse.puma"
  2441.    fprintf (f, ", ");
  2442. # line 1335 "FUnparse.puma"
  2443.    Unparse (t->DO_VAR.DO_ID);
  2444. # line 1336 "FUnparse.puma"
  2445.    fprintf (f, "=");
  2446. # line 1337 "FUnparse.puma"
  2447.    Unparse (t->DO_VAR.RANGE->SLICE_EXP.START);
  2448. # line 1338 "FUnparse.puma"
  2449.    fprintf (f, ",");
  2450. # line 1339 "FUnparse.puma"
  2451.    Unparse (t->DO_VAR.RANGE->SLICE_EXP.STOP);
  2452. # line 1340 "FUnparse.puma"
  2453.    fprintf (f, ",");
  2454. # line 1341 "FUnparse.puma"
  2455.    Unparse (t->DO_VAR.RANGE->SLICE_EXP.INC);
  2456. # line 1342 "FUnparse.puma"
  2457.    fprintf (f, ")");
  2458.   }
  2459.    return;
  2460.  
  2461.   case kTYPE_LIST:
  2462.   if (t->TYPE_LIST.Next->Kind == kTYPE_LIST) {
  2463. # line 1351 "FUnparse.puma"
  2464.   {
  2465. # line 1352 "FUnparse.puma"
  2466.    Unparse (t->TYPE_LIST.Elem);
  2467. # line 1353 "FUnparse.puma"
  2468.    fprintf (f, ",");
  2469. # line 1354 "FUnparse.puma"
  2470.    Unparse (t->TYPE_LIST.Next);
  2471.   }
  2472.    return;
  2473.  
  2474.   }
  2475.   if (t->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
  2476. # line 1357 "FUnparse.puma"
  2477.   {
  2478. # line 1358 "FUnparse.puma"
  2479.    Unparse (t->TYPE_LIST.Elem);
  2480.   }
  2481.    return;
  2482.  
  2483.   }
  2484.   break;
  2485.   case kTYPE_ID:
  2486. # line 1361 "FUnparse.puma"
  2487.   {
  2488. # line 1362 "FUnparse.puma"
  2489.    fprintf (f, "TYPE (");
  2490. # line 1363 "FUnparse.puma"
  2491.    Unparse (t->TYPE_ID.ID);
  2492. # line 1364 "FUnparse.puma"
  2493.    fprintf (f, ")");
  2494.   }
  2495.    return;
  2496.  
  2497.   case kSTRING_TYPE:
  2498.   if (t->STRING_TYPE.LENGTH->Kind == kCONST_EXP) {
  2499.   if (t->STRING_TYPE.LENGTH->CONST_EXP.C->Kind == kINT_CONSTANT) {
  2500.   if (equalint (t->STRING_TYPE.LENGTH->CONST_EXP.C->INT_CONSTANT.value, - 1)) {
  2501. # line 1367 "FUnparse.puma"
  2502.   {
  2503. # line 1368 "FUnparse.puma"
  2504.    fprintf (f, "CHARACTER*");
  2505.   }
  2506.    return;
  2507.  
  2508.   }
  2509.   }
  2510.   }
  2511.   if (t->STRING_TYPE.LENGTH->Kind == kDUMMY_EXP) {
  2512. # line 1371 "FUnparse.puma"
  2513.   {
  2514. # line 1372 "FUnparse.puma"
  2515.    fprintf (f, "CHARACTER*(*)");
  2516.   }
  2517.    return;
  2518.  
  2519.   }
  2520. # line 1375 "FUnparse.puma"
  2521.   {
  2522. # line 1376 "FUnparse.puma"
  2523.    fprintf (f, "CHARACTER*");
  2524. # line 1377 "FUnparse.puma"
  2525.    Unparse (t->STRING_TYPE.LENGTH);
  2526.   }
  2527.    return;
  2528.  
  2529.   case kARRAY_TYPE:
  2530. # line 1380 "FUnparse.puma"
  2531.   {
  2532. # line 1381 "FUnparse.puma"
  2533.    Unparse (t->ARRAY_TYPE.ARRAY_COMP_TYPE);
  2534. # line 1382 "FUnparse.puma"
  2535.    fprintf (f, " (", string);
  2536. # line 1383 "FUnparse.puma"
  2537.    Unparse (t->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  2538. # line 1384 "FUnparse.puma"
  2539.    fprintf (f, ")");
  2540.   }
  2541.    return;
  2542.  
  2543.   case kRECORD_TYPE:
  2544. # line 1387 "FUnparse.puma"
  2545.   {
  2546. # line 1388 "FUnparse.puma"
  2547.    fprintf (f, "RECORD\n");
  2548. # line 1389 "FUnparse.puma"
  2549.  indent += 8;
  2550. # line 1390 "FUnparse.puma"
  2551.    Unparse (t->RECORD_TYPE.COMPONENTS);
  2552. # line 1391 "FUnparse.puma"
  2553.    ind ();
  2554. # line 1392 "FUnparse.puma"
  2555.  indent -= 8;
  2556. # line 1393 "FUnparse.puma"
  2557.    fprintf (f, "END");
  2558.   }
  2559.    return;
  2560.  
  2561.   case kINDEX_TYPE:
  2562.   if (equalint (t->INDEX_TYPE.left_overlap, 0)) {
  2563.   if (equalint (t->INDEX_TYPE.right_overlap, 0)) {
  2564. # line 1396 "FUnparse.puma"
  2565.   {
  2566. # line 1397 "FUnparse.puma"
  2567.    Unparse (t->INDEX_TYPE.LOWER);
  2568. # line 1398 "FUnparse.puma"
  2569.    fprintf (f, ":");
  2570. # line 1399 "FUnparse.puma"
  2571.    Unparse (t->INDEX_TYPE.UPPER);
  2572.   }
  2573.    return;
  2574.  
  2575.   }
  2576.   }
  2577. # line 1402 "FUnparse.puma"
  2578.   {
  2579. # line 1403 "FUnparse.puma"
  2580.    Unparse (t->INDEX_TYPE.LOWER);
  2581. # line 1404 "FUnparse.puma"
  2582.    fprintf (f, ":");
  2583. # line 1405 "FUnparse.puma"
  2584.    Unparse (t->INDEX_TYPE.UPPER);
  2585. # line 1406 "FUnparse.puma"
  2586.    fprintf (f, "[%d:%d]", t->INDEX_TYPE.left_overlap, t->INDEX_TYPE.right_overlap);
  2587.   }
  2588.    return;
  2589.  
  2590.   case kDYNAMIC:
  2591.   if (equalint (t->DYNAMIC.left_overlap, 0)) {
  2592.   if (equalint (t->DYNAMIC.right_overlap, 0)) {
  2593. # line 1409 "FUnparse.puma"
  2594.   {
  2595. # line 1410 "FUnparse.puma"
  2596.    fprintf (f, ":");
  2597.   }
  2598.    return;
  2599.  
  2600.   }
  2601.   }
  2602. # line 1413 "FUnparse.puma"
  2603.   {
  2604. # line 1414 "FUnparse.puma"
  2605.    fprintf (f, ":");
  2606. # line 1415 "FUnparse.puma"
  2607.    fprintf (f, "[%d:%d]", t->DYNAMIC.left_overlap, t->DYNAMIC.right_overlap);
  2608.   }
  2609.    return;
  2610.  
  2611.   case kINTEGER_TYPE:
  2612. # line 1418 "FUnparse.puma"
  2613.   {
  2614. # line 1419 "FUnparse.puma"
  2615.    fprintf (f, "INTEGER*%d", t->INTEGER_TYPE.size);
  2616.   }
  2617.    return;
  2618.  
  2619.   case kBOOLEAN_TYPE:
  2620. # line 1422 "FUnparse.puma"
  2621.   {
  2622. # line 1423 "FUnparse.puma"
  2623.    fprintf (f, "LOGICAL*%d", t->BOOLEAN_TYPE.size);
  2624.   }
  2625.    return;
  2626.  
  2627.   case kCOMPLEX_TYPE:
  2628. # line 1426 "FUnparse.puma"
  2629.   {
  2630. # line 1427 "FUnparse.puma"
  2631.    fprintf (f, "COMPLEX*%d", t->COMPLEX_TYPE.size);
  2632.   }
  2633.    return;
  2634.  
  2635.   case kREAL_TYPE:
  2636. # line 1430 "FUnparse.puma"
  2637.   {
  2638. # line 1431 "FUnparse.puma"
  2639.    fprintf (f, "REAL*%d", t->REAL_TYPE.size);
  2640.   }
  2641.    return;
  2642.  
  2643.   case kTYPE_OBJ:
  2644. # line 1434 "FUnparse.puma"
  2645.   {
  2646. # line 1435 "FUnparse.puma"
  2647.    GetString (t->TYPE_OBJ.Ident, string);
  2648. # line 1436 "FUnparse.puma"
  2649.    fprintf (f, "%s", string);
  2650.   }
  2651.    return;
  2652.  
  2653.   case kREC_COMP:
  2654. # line 1439 "FUnparse.puma"
  2655.   {
  2656. # line 1440 "FUnparse.puma"
  2657.    GetString (t->REC_COMP.Ident, string);
  2658. # line 1441 "FUnparse.puma"
  2659.    fprintf (f, "%s", string);
  2660.   }
  2661.    return;
  2662.  
  2663.   case kDUMMY_TYPE:
  2664. # line 1444 "FUnparse.puma"
  2665.    return;
  2666.  
  2667.   case kVAR_OBJ:
  2668. # line 1447 "FUnparse.puma"
  2669.   {
  2670. # line 1448 "FUnparse.puma"
  2671.    GetString (t->VAR_OBJ.Ident, string);
  2672. # line 1449 "FUnparse.puma"
  2673.    fprintf (f, "%s", string);
  2674.   }
  2675.    return;
  2676.  
  2677.   }
  2678.  
  2679. # line 1452 "FUnparse.puma"
  2680.   {
  2681. # line 1453 "FUnparse.puma"
  2682.    fprintf (f, "<unknown_structure>");
  2683. # line 1454 "FUnparse.puma"
  2684.    WriteTree (f, t);
  2685.   }
  2686.    return;
  2687.  
  2688. ;
  2689. }
  2690.  
  2691. static int Priority
  2692. # if defined __STDC__ | defined __cplusplus
  2693. (register tTree yyP1)
  2694. # else
  2695. (yyP1)
  2696.  register tTree yyP1;
  2697. # endif
  2698. {
  2699.  
  2700.   switch (yyP1->Kind) {
  2701.   case kOP_DEFINED:
  2702. # line 1476 "FUnparse.puma"
  2703.    return 1;
  2704.  
  2705.   case kOP_EQV:
  2706. # line 1478 "FUnparse.puma"
  2707.    return 2;
  2708.  
  2709.   case kOP_NEQV:
  2710. # line 1479 "FUnparse.puma"
  2711.    return 2;
  2712.  
  2713.   case kOP_OR:
  2714. # line 1481 "FUnparse.puma"
  2715.    return 3;
  2716.  
  2717.   case kOP_XOR:
  2718. # line 1482 "FUnparse.puma"
  2719.    return 3;
  2720.  
  2721.   case kOP_AND:
  2722. # line 1484 "FUnparse.puma"
  2723.    return 4;
  2724.  
  2725.   case kOP1_NOT:
  2726. # line 1486 "FUnparse.puma"
  2727.    return 5;
  2728.  
  2729.   case kOP_EQ:
  2730. # line 1488 "FUnparse.puma"
  2731.    return 6;
  2732.  
  2733.   case kOP_NE:
  2734. # line 1489 "FUnparse.puma"
  2735.    return 6;
  2736.  
  2737.   case kOP_LE:
  2738. # line 1490 "FUnparse.puma"
  2739.    return 6;
  2740.  
  2741.   case kOP_LT:
  2742. # line 1491 "FUnparse.puma"
  2743.    return 6;
  2744.  
  2745.   case kOP_GE:
  2746. # line 1492 "FUnparse.puma"
  2747.    return 6;
  2748.  
  2749.   case kOP_GT:
  2750. # line 1493 "FUnparse.puma"
  2751.    return 6;
  2752.  
  2753.   case kOP_CONCAT:
  2754. # line 1495 "FUnparse.puma"
  2755.    return 7;
  2756.  
  2757.   case kOP_PLUS:
  2758. # line 1497 "FUnparse.puma"
  2759.    return 8;
  2760.  
  2761.   case kOP_MINUS:
  2762. # line 1498 "FUnparse.puma"
  2763.    return 8;
  2764.  
  2765.   case kOP1_SIGN:
  2766. # line 1499 "FUnparse.puma"
  2767.    return 8;
  2768.  
  2769.   case kOP_TIMES:
  2770. # line 1501 "FUnparse.puma"
  2771.    return 9;
  2772.  
  2773.   case kOP_DIVIDE:
  2774. # line 1502 "FUnparse.puma"
  2775.    return 9;
  2776.  
  2777.   case kOP_EXPO:
  2778. # line 1504 "FUnparse.puma"
  2779.    return 10;
  2780.  
  2781.   }
  2782.  
  2783.  yyAbort ("Priority");
  2784. }
  2785.  
  2786. static void ComUnparse
  2787. # if defined __STDC__ | defined __cplusplus
  2788. (register tTree t)
  2789. # else
  2790. (t)
  2791.  register tTree t;
  2792. # endif
  2793. {
  2794. # line 1514 "FUnparse.puma"
  2795.  unsigned char string [256];
  2796.   if (t == NoTree) return;
  2797.   if (t->Kind == kDECL_EMPTY) {
  2798. # line 1516 "FUnparse.puma"
  2799.    return;
  2800.  
  2801.   }
  2802.   if (t->Kind == kDECL_LIST) {
  2803.   if (t->DECL_LIST.Next->Kind == kDECL_EMPTY) {
  2804. # line 1519 "FUnparse.puma"
  2805.   {
  2806. # line 1520 "FUnparse.puma"
  2807.    ComUnparse (t->DECL_LIST.Elem);
  2808.   }
  2809.    return;
  2810.  
  2811.   }
  2812. # line 1523 "FUnparse.puma"
  2813.   {
  2814. # line 1524 "FUnparse.puma"
  2815.    ComUnparse (t->DECL_LIST.Elem);
  2816. # line 1525 "FUnparse.puma"
  2817.    fprintf (f, ",");
  2818. # line 1526 "FUnparse.puma"
  2819.    ComUnparse (t->DECL_LIST.Next);
  2820.   }
  2821.    return;
  2822.  
  2823.   }
  2824.   if (t->Kind == kVAR_DECL) {
  2825.   if (t->VAR_DECL.VAL->Kind == kARRAY_TYPE) {
  2826. # line 1529 "FUnparse.puma"
  2827.   {
  2828. # line 1530 "FUnparse.puma"
  2829.    GetString (t->VAR_DECL.Name, string);
  2830. # line 1531 "FUnparse.puma"
  2831.    fprintf (f, " %s (", string);
  2832. # line 1532 "FUnparse.puma"
  2833.    Unparse (t->VAR_DECL.VAL->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  2834. # line 1533 "FUnparse.puma"
  2835.    fprintf (f, ")");
  2836.   }
  2837.    return;
  2838.  
  2839.   }
  2840. # line 1536 "FUnparse.puma"
  2841.   {
  2842. # line 1537 "FUnparse.puma"
  2843.    GetString (t->VAR_DECL.Name, string);
  2844. # line 1538 "FUnparse.puma"
  2845.    fprintf (f, " %s", string);
  2846.   }
  2847.    return;
  2848.  
  2849.   }
  2850. # line 1541 "FUnparse.puma"
  2851.   {
  2852. # line 1542 "FUnparse.puma"
  2853.    fprintf (f, "<unknown_common_structure>");
  2854.   }
  2855.    return;
  2856.  
  2857. ;
  2858. }
  2859.  
  2860. static void UnparseElse
  2861. # if defined __STDC__ | defined __cplusplus
  2862. (register tTree t)
  2863. # else
  2864. (t)
  2865.  register tTree t;
  2866. # endif
  2867. {
  2868.   if (t == NoTree) return;
  2869.   if (t->Kind == kACF_EMPTY) {
  2870. # line 1553 "FUnparse.puma"
  2871.    return;
  2872.  
  2873.   }
  2874.   if (t->Kind == kACF_LIST) {
  2875.   if (t->ACF_LIST.Elem->Kind == kACF_IF) {
  2876.   if (equalint (t->ACF_LIST.Elem->ACF_IF.Label, 0)) {
  2877.   if (t->ACF_LIST.Next->Kind == kACF_EMPTY) {
  2878. # line 1559 "FUnparse.puma"
  2879.   {
  2880. # line 1563 "FUnparse.puma"
  2881.    ind ();
  2882. # line 1564 "FUnparse.puma"
  2883.    fprintf (f, " ELSE IF (");
  2884. # line 1565 "FUnparse.puma"
  2885.    Unparse (t->ACF_LIST.Elem->ACF_IF.IF_EXP);
  2886. # line 1566 "FUnparse.puma"
  2887.    fprintf (f, ") THEN");
  2888. # line 1567 "FUnparse.puma"
  2889.    LCR (t->ACF_LIST.Elem->ACF_IF.Line);
  2890. # line 1568 "FUnparse.puma"
  2891.  indent = indent + IndentLength;
  2892. # line 1569 "FUnparse.puma"
  2893.    Unparse (t->ACF_LIST.Elem->ACF_IF.THEN_PART);
  2894. # line 1570 "FUnparse.puma"
  2895.  indent = indent - IndentLength;
  2896. # line 1571 "FUnparse.puma"
  2897.    UnparseElse (t->ACF_LIST.Elem->ACF_IF.ELSE_PART);
  2898.   }
  2899.    return;
  2900.  
  2901.   }
  2902.   }
  2903.   }
  2904.   }
  2905. # line 1574 "FUnparse.puma"
  2906.   {
  2907. # line 1575 "FUnparse.puma"
  2908.    ind ();
  2909. # line 1576 "FUnparse.puma"
  2910.    fprintf (f, " ELSE\n");
  2911. # line 1577 "FUnparse.puma"
  2912.  indent = indent + IndentLength;
  2913. # line 1578 "FUnparse.puma"
  2914.    Unparse (t);
  2915. # line 1579 "FUnparse.puma"
  2916.  indent = indent - IndentLength;
  2917.   }
  2918.    return;
  2919.  
  2920. ;
  2921. }
  2922.  
  2923. static void UnparseDoRange
  2924. # if defined __STDC__ | defined __cplusplus
  2925. (register tTree slice)
  2926. # else
  2927. (slice)
  2928.  register tTree slice;
  2929. # endif
  2930. {
  2931.   if (slice == NoTree) return;
  2932.   if (slice->Kind == kSLICE_EXP) {
  2933.   if (slice->SLICE_EXP.INC->Kind == kDUMMY_EXP) {
  2934. # line 1590 "FUnparse.puma"
  2935.   {
  2936. # line 1591 "FUnparse.puma"
  2937.    Unparse (slice->SLICE_EXP.START);
  2938. # line 1592 "FUnparse.puma"
  2939.    fprintf (f, ",");
  2940. # line 1593 "FUnparse.puma"
  2941.    Unparse (slice->SLICE_EXP.STOP);
  2942.   }
  2943.    return;
  2944.  
  2945.   }
  2946. # line 1596 "FUnparse.puma"
  2947.   {
  2948. # line 1597 "FUnparse.puma"
  2949.    Unparse (slice->SLICE_EXP.START);
  2950. # line 1598 "FUnparse.puma"
  2951.    fprintf (f, ",");
  2952. # line 1599 "FUnparse.puma"
  2953.    Unparse (slice->SLICE_EXP.STOP);
  2954. # line 1600 "FUnparse.puma"
  2955.    fprintf (f, ",");
  2956. # line 1601 "FUnparse.puma"
  2957.    Unparse (slice->SLICE_EXP.INC);
  2958.   }
  2959.    return;
  2960.  
  2961.   }
  2962. ;
  2963. }
  2964.  
  2965. static void ExpUnparse
  2966. # if defined __STDC__ | defined __cplusplus
  2967. (register tTree t, register int leftprio, register int rightprio)
  2968. # else
  2969. (t, leftprio, rightprio)
  2970.  register tTree t;
  2971.  register int leftprio;
  2972.  register int rightprio;
  2973. # endif
  2974. {
  2975. # line 1625 "FUnparse.puma"
  2976.  
  2977. char string [100];
  2978.  
  2979.   if (t == NoTree) return;
  2980.  
  2981.   switch (t->Kind) {
  2982.   case kOP_EXP:
  2983. # line 1629 "FUnparse.puma"
  2984.  {
  2985.   int myleftprio;
  2986.   int myrightprio;
  2987.   {
  2988. # line 1631 "FUnparse.puma"
  2989.  
  2990. # line 1632 "FUnparse.puma"
  2991.  
  2992. # line 1634 "FUnparse.puma"
  2993.    myleftprio = Priority (t->OP_EXP.EXP_OP);
  2994. # line 1635 "FUnparse.puma"
  2995.    myrightprio = myleftprio;
  2996. # line 1637 "FUnparse.puma"
  2997.  if (t->OP_EXP.EXP_OP->Kind == kOP_EXPO) myleftprio += 1;
  2998. # line 1639 "FUnparse.puma"
  2999.  if ((leftprio >= myleftprio) || (rightprio > myrightprio))
  3000.       { fprintf (f, "(");
  3001.         ExpUnparse (t, 0, 0);
  3002.         fprintf (f, ")");
  3003.       }
  3004.      else
  3005.       { ExpUnparse (t->OP_EXP.OPND1, leftprio, myleftprio);
  3006.         OpUnparse (t->OP_EXP.EXP_OP);
  3007.         ExpUnparse (t->OP_EXP.OPND2, myrightprio, rightprio);
  3008.       }
  3009.  
  3010.   }
  3011.    return;
  3012.  }
  3013.  
  3014.   case kOP1_EXP:
  3015. # line 1652 "FUnparse.puma"
  3016.  {
  3017.   int priority;
  3018.   {
  3019. # line 1654 "FUnparse.puma"
  3020.  
  3021. # line 1656 "FUnparse.puma"
  3022.  if (t->OP1_EXP.EXP_OP1->Kind == kOP_DEFINED) priority = 12;
  3023.         else priority = Priority (t->OP1_EXP.EXP_OP1);
  3024.  
  3025. # line 1660 "FUnparse.puma"
  3026.  if (rightprio > priority)
  3027.       { fprintf (f, "(");
  3028.         ExpUnparse (t, 0, 0);
  3029.         fprintf (f, ")");
  3030.       }
  3031.      else
  3032.       { OpUnparse (t->OP1_EXP.EXP_OP1);
  3033.         ExpUnparse (t->OP1_EXP.OPND, priority, rightprio);
  3034.       }
  3035.  
  3036.   }
  3037.    return;
  3038.  }
  3039.  
  3040.   case kDUMMY_EXP:
  3041. # line 1672 "FUnparse.puma"
  3042.   {
  3043. # line 1673 "FUnparse.puma"
  3044.    fprintf (f, "*");
  3045.   }
  3046.    return;
  3047.  
  3048.   case kCONST_EXP:
  3049. # line 1676 "FUnparse.puma"
  3050.   {
  3051. # line 1677 "FUnparse.puma"
  3052.    Unparse (t->CONST_EXP.C);
  3053.   }
  3054.    return;
  3055.  
  3056.   case kVAR_EXP:
  3057. # line 1680 "FUnparse.puma"
  3058.   {
  3059. # line 1681 "FUnparse.puma"
  3060.    Unparse (t->VAR_EXP.V);
  3061.   }
  3062.    return;
  3063.  
  3064.   case kTYPE_EXP:
  3065. # line 1684 "FUnparse.puma"
  3066.   {
  3067. # line 1685 "FUnparse.puma"
  3068.    GetString (t->TYPE_EXP.ID->TYPE_OBJ.Ident, string);
  3069. # line 1686 "FUnparse.puma"
  3070.    fprintf (f, "%s (", string);
  3071. # line 1687 "FUnparse.puma"
  3072.    Unparse (t->TYPE_EXP.ELEMENTS);
  3073. # line 1688 "FUnparse.puma"
  3074.    fprintf (f, ")");
  3075.   }
  3076.    return;
  3077.  
  3078.   case kARRAY_EXP:
  3079. # line 1691 "FUnparse.puma"
  3080.   {
  3081. # line 1692 "FUnparse.puma"
  3082.    fprintf (f, "[");
  3083. # line 1693 "FUnparse.puma"
  3084.    Unparse (t->ARRAY_EXP.ELEMENTS);
  3085. # line 1694 "FUnparse.puma"
  3086.    fprintf (f, "]");
  3087.   }
  3088.    return;
  3089.  
  3090.   case kSLICE_EXP:
  3091. # line 1697 "FUnparse.puma"
  3092.   {
  3093. # line 1698 "FUnparse.puma"
  3094.  if (t->SLICE_EXP.START->Kind != kDUMMY_EXP)
  3095.               ExpUnparse (t->SLICE_EXP.START,0,0);
  3096. # line 1700 "FUnparse.puma"
  3097.    fprintf (f, ":");
  3098. # line 1701 "FUnparse.puma"
  3099.  if (t->SLICE_EXP.STOP->Kind != kDUMMY_EXP)
  3100.               ExpUnparse (t->SLICE_EXP.STOP,0,0);
  3101. # line 1703 "FUnparse.puma"
  3102.  if (t->SLICE_EXP.INC->Kind != kDUMMY_EXP)
  3103.             { fprintf (f,":");
  3104.               ExpUnparse (t->SLICE_EXP.INC,0,0);
  3105.             }
  3106.  
  3107.   }
  3108.    return;
  3109.  
  3110.   case kFUNC_CALL_EXP:
  3111. # line 1710 "FUnparse.puma"
  3112.   {
  3113. # line 1712 "FUnparse.puma"
  3114.    Unparse (t->FUNC_CALL_EXP.FUNC_ID);
  3115. # line 1713 "FUnparse.puma"
  3116.    fprintf (f, "(");
  3117. # line 1714 "FUnparse.puma"
  3118.    Unparse (t->FUNC_CALL_EXP.FUNC_PARAMS);
  3119. # line 1715 "FUnparse.puma"
  3120.    fprintf (f, ")");
  3121.   }
  3122.    return;
  3123.  
  3124.   case kDO_EXP:
  3125.   if (t->DO_EXP.RANGE->SLICE_EXP.INC->Kind == kDUMMY_EXP) {
  3126. # line 1718 "FUnparse.puma"
  3127.   {
  3128. # line 1719 "FUnparse.puma"
  3129.    fprintf (f, "(");
  3130. # line 1720 "FUnparse.puma"
  3131.    Unparse (t->DO_EXP.BODY);
  3132. # line 1721 "FUnparse.puma"
  3133.    fprintf (f, ", ");
  3134. # line 1722 "FUnparse.puma"
  3135.    Unparse (t->DO_EXP.DO_ID);
  3136. # line 1723 "FUnparse.puma"
  3137.    fprintf (f, "=");
  3138. # line 1724 "FUnparse.puma"
  3139.    Unparse (t->DO_EXP.RANGE->SLICE_EXP.START);
  3140. # line 1725 "FUnparse.puma"
  3141.    fprintf (f, ",");
  3142. # line 1726 "FUnparse.puma"
  3143.    Unparse (t->DO_EXP.RANGE->SLICE_EXP.STOP);
  3144. # line 1727 "FUnparse.puma"
  3145.    fprintf (f, ")");
  3146.   }
  3147.    return;
  3148.  
  3149.   }
  3150. # line 1730 "FUnparse.puma"
  3151.   {
  3152. # line 1731 "FUnparse.puma"
  3153.    fprintf (f, "(");
  3154. # line 1732 "FUnparse.puma"
  3155.    Unparse (t->DO_EXP.BODY);
  3156. # line 1733 "FUnparse.puma"
  3157.    fprintf (f, ", ");
  3158. # line 1734 "FUnparse.puma"
  3159.    Unparse (t->DO_EXP.DO_ID);
  3160. # line 1735 "FUnparse.puma"
  3161.    fprintf (f, "=");
  3162. # line 1736 "FUnparse.puma"
  3163.    Unparse (t->DO_EXP.RANGE->SLICE_EXP.START);
  3164. # line 1737 "FUnparse.puma"
  3165.    fprintf (f, ",");
  3166. # line 1738 "FUnparse.puma"
  3167.    Unparse (t->DO_EXP.RANGE->SLICE_EXP.STOP);
  3168. # line 1739 "FUnparse.puma"
  3169.    fprintf (f, ",");
  3170. # line 1740 "FUnparse.puma"
  3171.    Unparse (t->DO_EXP.RANGE->SLICE_EXP.INC);
  3172. # line 1741 "FUnparse.puma"
  3173.    fprintf (f, ")");
  3174.   }
  3175.    return;
  3176.  
  3177.   case kNAMED_EXP:
  3178. # line 1744 "FUnparse.puma"
  3179.   {
  3180. # line 1745 "FUnparse.puma"
  3181.    GetString (t->NAMED_EXP.Name, string);
  3182. # line 1746 "FUnparse.puma"
  3183.    fprintf (f, "%s=", string);
  3184. # line 1747 "FUnparse.puma"
  3185.    Unparse (t->NAMED_EXP.VAL);
  3186.   }
  3187.    return;
  3188.  
  3189.   }
  3190.  
  3191. # line 1750 "FUnparse.puma"
  3192.   {
  3193. # line 1751 "FUnparse.puma"
  3194.    fprintf (f, "<unknown_exp>");
  3195.   }
  3196.    return;
  3197.  
  3198. ;
  3199. }
  3200.  
  3201. static void OpUnparse
  3202. # if defined __STDC__ | defined __cplusplus
  3203. (register tTree t)
  3204. # else
  3205. (t)
  3206.  register tTree t;
  3207. # endif
  3208. {
  3209. # line 1756 "FUnparse.puma"
  3210.  
  3211. char string [100];
  3212.  
  3213.   if (t == NoTree) return;
  3214.  
  3215.   switch (t->Kind) {
  3216.   case kOP_EQ:
  3217. # line 1760 "FUnparse.puma"
  3218.   {
  3219. # line 1760 "FUnparse.puma"
  3220.    fprintf (f, " .eq. ");
  3221.   }
  3222.    return;
  3223.  
  3224.   case kOP_NE:
  3225. # line 1761 "FUnparse.puma"
  3226.   {
  3227. # line 1761 "FUnparse.puma"
  3228.    fprintf (f, " .ne. ");
  3229.   }
  3230.    return;
  3231.  
  3232.   case kOP_LE:
  3233. # line 1762 "FUnparse.puma"
  3234.   {
  3235. # line 1762 "FUnparse.puma"
  3236.    fprintf (f, " .le. ");
  3237.   }
  3238.    return;
  3239.  
  3240.   case kOP_LT:
  3241. # line 1763 "FUnparse.puma"
  3242.   {
  3243. # line 1763 "FUnparse.puma"
  3244.    fprintf (f, " .lt. ");
  3245.   }
  3246.    return;
  3247.  
  3248.   case kOP_GE:
  3249. # line 1764 "FUnparse.puma"
  3250.   {
  3251. # line 1764 "FUnparse.puma"
  3252.    fprintf (f, " .ge. ");
  3253.   }
  3254.    return;
  3255.  
  3256.   case kOP_GT:
  3257. # line 1765 "FUnparse.puma"
  3258.   {
  3259. # line 1765 "FUnparse.puma"
  3260.    fprintf (f, " .gt. ");
  3261.   }
  3262.    return;
  3263.  
  3264.   case kOP_PLUS:
  3265. # line 1766 "FUnparse.puma"
  3266.   {
  3267. # line 1766 "FUnparse.puma"
  3268.    fprintf (f, "+");
  3269.   }
  3270.    return;
  3271.  
  3272.   case kOP_MINUS:
  3273. # line 1767 "FUnparse.puma"
  3274.   {
  3275. # line 1767 "FUnparse.puma"
  3276.    fprintf (f, "-");
  3277.   }
  3278.    return;
  3279.  
  3280.   case kOP_OR:
  3281. # line 1768 "FUnparse.puma"
  3282.   {
  3283. # line 1768 "FUnparse.puma"
  3284.    fprintf (f, " .or. ");
  3285.   }
  3286.    return;
  3287.  
  3288.   case kOP_XOR:
  3289. # line 1769 "FUnparse.puma"
  3290.   {
  3291. # line 1769 "FUnparse.puma"
  3292.    fprintf (f, " .xor. ");
  3293.   }
  3294.    return;
  3295.  
  3296.   case kOP_CONCAT:
  3297. # line 1770 "FUnparse.puma"
  3298.   {
  3299. # line 1770 "FUnparse.puma"
  3300.    fprintf (f, " //");
  3301.   }
  3302.    return;
  3303.  
  3304.   case kOP_TIMES:
  3305. # line 1771 "FUnparse.puma"
  3306.   {
  3307. # line 1771 "FUnparse.puma"
  3308.    fprintf (f, "*");
  3309.   }
  3310.    return;
  3311.  
  3312.   case kOP_DIVIDE:
  3313. # line 1772 "FUnparse.puma"
  3314.   {
  3315. # line 1772 "FUnparse.puma"
  3316.    fprintf (f, "/");
  3317.   }
  3318.    return;
  3319.  
  3320.   case kOP_DIV:
  3321. # line 1773 "FUnparse.puma"
  3322.   {
  3323. # line 1773 "FUnparse.puma"
  3324.    fprintf (f, " div ");
  3325.   }
  3326.    return;
  3327.  
  3328.   case kOP_AND:
  3329. # line 1774 "FUnparse.puma"
  3330.   {
  3331. # line 1774 "FUnparse.puma"
  3332.    fprintf (f, " .and. ");
  3333.   }
  3334.    return;
  3335.  
  3336.   case kOP_EQV:
  3337. # line 1775 "FUnparse.puma"
  3338.   {
  3339. # line 1775 "FUnparse.puma"
  3340.    fprintf (f, " .eqv. ");
  3341.   }
  3342.    return;
  3343.  
  3344.   case kOP_NEQV:
  3345. # line 1776 "FUnparse.puma"
  3346.   {
  3347. # line 1776 "FUnparse.puma"
  3348.    fprintf (f, " .neqv. ");
  3349.   }
  3350.    return;
  3351.  
  3352.   case kOP_EXPO:
  3353. # line 1777 "FUnparse.puma"
  3354.   {
  3355. # line 1777 "FUnparse.puma"
  3356.    fprintf (f, "**");
  3357.   }
  3358.    return;
  3359.  
  3360.   case kOP_MOD:
  3361. # line 1778 "FUnparse.puma"
  3362.   {
  3363. # line 1778 "FUnparse.puma"
  3364.    fprintf (f, " mod ");
  3365.   }
  3366.    return;
  3367.  
  3368.   case kOP_IN:
  3369. # line 1779 "FUnparse.puma"
  3370.   {
  3371. # line 1779 "FUnparse.puma"
  3372.    fprintf (f, " in ");
  3373.   }
  3374.    return;
  3375.  
  3376.   case kOP1_NOT:
  3377. # line 1781 "FUnparse.puma"
  3378.   {
  3379. # line 1781 "FUnparse.puma"
  3380.    fprintf (f, " .not. ");
  3381.   }
  3382.    return;
  3383.  
  3384.   case kOP1_SIGN:
  3385. # line 1782 "FUnparse.puma"
  3386.   {
  3387. # line 1782 "FUnparse.puma"
  3388.    fprintf (f, "-");
  3389.   }
  3390.    return;
  3391.  
  3392.   case kOP_DEFINED:
  3393. # line 1784 "FUnparse.puma"
  3394.   {
  3395. # line 1786 "FUnparse.puma"
  3396.    GetString (t->OP_DEFINED.opname, string);
  3397. # line 1787 "FUnparse.puma"
  3398.    fprintf (f, " %s ", string);
  3399.   }
  3400.    return;
  3401.  
  3402.   }
  3403.  
  3404. # line 1790 "FUnparse.puma"
  3405.   {
  3406. # line 1790 "FUnparse.puma"
  3407.    fprintf (f, "<op?>");
  3408.   }
  3409.    return;
  3410.  
  3411. ;
  3412. }
  3413.  
  3414. static void FormatUnparse
  3415. # if defined __STDC__ | defined __cplusplus
  3416. (register tTree t)
  3417. # else
  3418. (t)
  3419.  register tTree t;
  3420. # endif
  3421. {
  3422. # line 1801 "FUnparse.puma"
  3423.  unsigned char string[256];
  3424.   if (t == NoTree) return;
  3425.   if (t->Kind == kBTP_LIST) {
  3426.   if (t->BTP_LIST.Next->Kind == kBTP_EMPTY) {
  3427. # line 1803 "FUnparse.puma"
  3428.   {
  3429. # line 1804 "FUnparse.puma"
  3430.    FormatUnparse (t->BTP_LIST.Elem);
  3431.   }
  3432.    return;
  3433.  
  3434.   }
  3435.   if (t->BTP_LIST.Next->Kind == kBTP_LIST) {
  3436. # line 1807 "FUnparse.puma"
  3437.   {
  3438. # line 1808 "FUnparse.puma"
  3439.    FormatUnparse (t->BTP_LIST.Elem);
  3440. # line 1809 "FUnparse.puma"
  3441.    fprintf (f, "\n", string);
  3442. # line 1810 "FUnparse.puma"
  3443.    cont_ind ();
  3444. # line 1811 "FUnparse.puma"
  3445.    FormatUnparse (t->BTP_LIST.Next);
  3446.   }
  3447.    return;
  3448.  
  3449.   }
  3450.   }
  3451.   if (t->Kind == kFORMAT_PARAM) {
  3452. # line 1814 "FUnparse.puma"
  3453.   {
  3454. # line 1815 "FUnparse.puma"
  3455.    StGetString (t->FORMAT_PARAM.S, string);
  3456. # line 1816 "FUnparse.puma"
  3457.    fprintf (f, "%s", string);
  3458.   }
  3459.    return;
  3460.  
  3461.   }
  3462. ;
  3463. }
  3464.  
  3465. static void LayoutUnparse
  3466. # if defined __STDC__ | defined __cplusplus
  3467. (register tTree t)
  3468. # else
  3469. (t)
  3470.  register tTree t;
  3471. # endif
  3472. {
  3473. # line 1827 "FUnparse.puma"
  3474.  unsigned char string[256];
  3475.   if (t == NoTree) return;
  3476.  
  3477.   switch (t->Kind) {
  3478.   case kHOST_DISTRIBUTION:
  3479. # line 1829 "FUnparse.puma"
  3480.   {
  3481. # line 1830 "FUnparse.puma"
  3482.    fprintf (f, "(:HOST)");
  3483.   }
  3484.    return;
  3485.  
  3486.   case kREPL_DISTRIBUTION:
  3487. # line 1833 "FUnparse.puma"
  3488.   {
  3489. # line 1834 "FUnparse.puma"
  3490.    fprintf (f, "(:REPLICATED)");
  3491.   }
  3492.    return;
  3493.  
  3494.   case kNODE_DISTRIBUTION:
  3495. # line 1837 "FUnparse.puma"
  3496.   {
  3497. # line 1838 "FUnparse.puma"
  3498.    fprintf (f, "(");
  3499. # line 1839 "FUnparse.puma"
  3500.    LayoutUnparse (t->NODE_DISTRIBUTION.MAPPING);
  3501. # line 1840 "FUnparse.puma"
  3502.    fprintf (f, ")");
  3503.   }
  3504.    return;
  3505.  
  3506.   case kDIST_LIST:
  3507.   if (t->DIST_LIST.Next->Kind == kDIST_EMPTY) {
  3508. # line 1843 "FUnparse.puma"
  3509.   {
  3510. # line 1844 "FUnparse.puma"
  3511.    LayoutUnparse (t->DIST_LIST.Elem);
  3512.   }
  3513.    return;
  3514.  
  3515.   }
  3516. # line 1847 "FUnparse.puma"
  3517.   {
  3518. # line 1848 "FUnparse.puma"
  3519.    LayoutUnparse (t->DIST_LIST.Elem);
  3520. # line 1849 "FUnparse.puma"
  3521.    fprintf (f, ",");
  3522. # line 1850 "FUnparse.puma"
  3523.    LayoutUnparse (t->DIST_LIST.Next);
  3524.   }
  3525.    return;
  3526.  
  3527.   case kBLOCK_DISTRIBUTION:
  3528.   if (t->BLOCK_DISTRIBUTION.SIZE->Kind == kDUMMY_EXP) {
  3529. # line 1853 "FUnparse.puma"
  3530.   {
  3531. # line 1854 "FUnparse.puma"
  3532.    fprintf (f, "BLOCK");
  3533.   }
  3534.    return;
  3535.  
  3536.   }
  3537. # line 1857 "FUnparse.puma"
  3538.   {
  3539. # line 1858 "FUnparse.puma"
  3540.    fprintf (f, "BLOCK(");
  3541. # line 1859 "FUnparse.puma"
  3542.    Unparse (t->BLOCK_DISTRIBUTION.SIZE);
  3543. # line 1860 "FUnparse.puma"
  3544.    fprintf (f, ")");
  3545.   }
  3546.    return;
  3547.  
  3548.   case kCYCLIC_DISTRIBUTION:
  3549.   if (t->CYCLIC_DISTRIBUTION.SIZE->Kind == kDUMMY_EXP) {
  3550. # line 1863 "FUnparse.puma"
  3551.   {
  3552. # line 1864 "FUnparse.puma"
  3553.    fprintf (f, "CYCLIC");
  3554.   }
  3555.    return;
  3556.  
  3557.   }
  3558. # line 1867 "FUnparse.puma"
  3559.   {
  3560. # line 1868 "FUnparse.puma"
  3561.    fprintf (f, "CYCLIC(");
  3562. # line 1869 "FUnparse.puma"
  3563.    Unparse (t->CYCLIC_DISTRIBUTION.SIZE);
  3564. # line 1870 "FUnparse.puma"
  3565.    fprintf (f, ")");
  3566.   }
  3567.    return;
  3568.  
  3569.   case kSERIAL_DISTRIBUTION:
  3570. # line 1873 "FUnparse.puma"
  3571.   {
  3572. # line 1874 "FUnparse.puma"
  3573.    fprintf (f, "*");
  3574.   }
  3575.    return;
  3576.  
  3577.   }
  3578.  
  3579. # line 1877 "FUnparse.puma"
  3580.   {
  3581. # line 1878 "FUnparse.puma"
  3582.    fprintf (f, "<unknown-layout>");
  3583.   }
  3584.    return;
  3585.  
  3586. ;
  3587. }
  3588.  
  3589. static bool IsItAllocatable
  3590. # if defined __STDC__ | defined __cplusplus
  3591. (register tTree t)
  3592. # else
  3593. (t)
  3594.  register tTree t;
  3595. # endif
  3596. {
  3597.   if (t == NoTree) return false;
  3598.   if (t->Kind == kARRAY_TYPE) {
  3599. # line 1889 "FUnparse.puma"
  3600.   {
  3601. # line 1890 "FUnparse.puma"
  3602.    if (! (IsItAllocatable (t->ARRAY_TYPE.ARRAY_INDEX_TYPES))) goto yyL1;
  3603.   }
  3604.    return true;
  3605. yyL1:;
  3606.  
  3607.   }
  3608.   if (t->Kind == kTYPE_LIST) {
  3609. # line 1893 "FUnparse.puma"
  3610.   {
  3611. # line 1894 "FUnparse.puma"
  3612.    if (! (IsItAllocatable (t->TYPE_LIST.Elem))) goto yyL2;
  3613.   {
  3614. # line 1895 "FUnparse.puma"
  3615.    if (! (IsItAllocatable (t->TYPE_LIST.Next))) goto yyL2;
  3616.   }
  3617.   }
  3618.    return true;
  3619. yyL2:;
  3620.  
  3621.   }
  3622.   if (t->Kind == kTYPE_EMPTY) {
  3623. # line 1898 "FUnparse.puma"
  3624.    return true;
  3625.  
  3626.   }
  3627.   if (t->Kind == kDYNAMIC) {
  3628. # line 1901 "FUnparse.puma"
  3629.    return true;
  3630.  
  3631.   }
  3632.   return false;
  3633. }
  3634.  
  3635. static int UP_List_Length
  3636. # if defined __STDC__ | defined __cplusplus
  3637. (register tTree t)
  3638. # else
  3639. (t)
  3640.  register tTree t;
  3641. # endif
  3642. {
  3643.   if (t->Kind == kDECL_LIST) {
  3644. # line 1912 "FUnparse.puma"
  3645.    return (1 + UP_List_Length (t->DECL_LIST.Next));
  3646.  
  3647.   }
  3648.   if (t->Kind == kDECL_EMPTY) {
  3649. # line 1916 "FUnparse.puma"
  3650.    return 0;
  3651.  
  3652.   }
  3653.   if (t->Kind == kBTP_LIST) {
  3654. # line 1920 "FUnparse.puma"
  3655.    return (1 + UP_List_Length (t->BTP_LIST.Next));
  3656.  
  3657.   }
  3658.   if (t->Kind == kBTP_EMPTY) {
  3659. # line 1924 "FUnparse.puma"
  3660.    return 0;
  3661.  
  3662.   }
  3663.  yyAbort ("UP_List_Length");
  3664. }
  3665.  
  3666. static void FormalParamUnparse
  3667. # if defined __STDC__ | defined __cplusplus
  3668. (register tTree t)
  3669. # else
  3670. (t)
  3671.  register tTree t;
  3672. # endif
  3673. {
  3674. # line 1936 "FUnparse.puma"
  3675.  
  3676. unsigned char string[256];
  3677.  
  3678.   if (t == NoTree) return;
  3679.   if (t->Kind == kDECL_EMPTY) {
  3680. # line 1940 "FUnparse.puma"
  3681.    return;
  3682.  
  3683.   }
  3684.   if (t->Kind == kDECL_LIST) {
  3685.   if (t->DECL_LIST.Next->Kind == kDECL_EMPTY) {
  3686. # line 1943 "FUnparse.puma"
  3687.   {
  3688. # line 1944 "FUnparse.puma"
  3689.    FormalParamUnparse (t->DECL_LIST.Elem);
  3690.   }
  3691.    return;
  3692.  
  3693.   }
  3694. # line 1947 "FUnparse.puma"
  3695.   {
  3696. # line 1948 "FUnparse.puma"
  3697.    FormalParamUnparse (t->DECL_LIST.Elem);
  3698. # line 1949 "FUnparse.puma"
  3699.    fprintf (f, ", ");
  3700. # line 1950 "FUnparse.puma"
  3701.  if (((UP_List_Length (t->DECL_LIST.Next) + 1) % 8) == 0)
  3702.  
  3703.             { fprintf (f, "\n");
  3704.               fprintf (f, "     $  ");
  3705.             }
  3706.  
  3707. # line 1956 "FUnparse.puma"
  3708.    FormalParamUnparse (t->DECL_LIST.Next);
  3709.   }
  3710.    return;
  3711.  
  3712.   }
  3713.   if (t->Kind == kVAR_PARAM_DECL) {
  3714. # line 1959 "FUnparse.puma"
  3715.   {
  3716. # line 1960 "FUnparse.puma"
  3717.    GetString (t->VAR_PARAM_DECL.Name, string);
  3718. # line 1961 "FUnparse.puma"
  3719.    fprintf (f, "%s", string);
  3720.   }
  3721.    return;
  3722.  
  3723.   }
  3724.   if (t->Kind == kRET_PARAM_DECL) {
  3725. # line 1964 "FUnparse.puma"
  3726.   {
  3727. # line 1965 "FUnparse.puma"
  3728.    fprintf (f, "*");
  3729.   }
  3730.    return;
  3731.  
  3732.   }
  3733. # line 1968 "FUnparse.puma"
  3734.   {
  3735. # line 1969 "FUnparse.puma"
  3736.    fprintf (f, "<unknown_formal_param>");
  3737.   }
  3738.    return;
  3739.  
  3740. ;
  3741. }
  3742.  
  3743. static void ParamUnparse
  3744. # if defined __STDC__ | defined __cplusplus
  3745. (register tTree t)
  3746. # else
  3747. (t)
  3748.  register tTree t;
  3749. # endif
  3750. {
  3751. # line 1980 "FUnparse.puma"
  3752.  
  3753. unsigned char string[256];
  3754.  
  3755.   if (t == NoTree) return;
  3756.   if (t->Kind == kBTP_LIST) {
  3757.   if (t->BTP_LIST.Next->Kind == kBTP_LIST) {
  3758. # line 1984 "FUnparse.puma"
  3759.   {
  3760. # line 1985 "FUnparse.puma"
  3761.    Unparse (t->BTP_LIST.Elem);
  3762. # line 1986 "FUnparse.puma"
  3763.    fprintf (f, ",");
  3764. # line 1987 "FUnparse.puma"
  3765.  if (((UP_List_Length (t->BTP_LIST.Next) + 1) % 8) == 0)
  3766.  
  3767.             { fprintf (f, "\n");
  3768.               fprintf (f, "     $  ");
  3769.             }
  3770.  
  3771. # line 1993 "FUnparse.puma"
  3772.    ParamUnparse (t->BTP_LIST.Next);
  3773.   }
  3774.    return;
  3775.  
  3776.   }
  3777.   if (t->BTP_LIST.Next->Kind == kBTP_EMPTY) {
  3778. # line 1996 "FUnparse.puma"
  3779.   {
  3780. # line 1997 "FUnparse.puma"
  3781.    Unparse (t->BTP_LIST.Elem);
  3782.   }
  3783.    return;
  3784.  
  3785.   }
  3786.   }
  3787. ;
  3788. }
  3789.  
  3790. static void AttributeUnparse
  3791. # if defined __STDC__ | defined __cplusplus
  3792. (register tTree t)
  3793. # else
  3794. (t)
  3795.  register tTree t;
  3796. # endif
  3797. {
  3798. # line 2010 "FUnparse.puma"
  3799.  
  3800. unsigned char string[256];
  3801.  
  3802.   if (t == NoTree) return;
  3803.  
  3804.   switch (t->Kind) {
  3805.   case kDECL_EMPTY:
  3806. # line 2014 "FUnparse.puma"
  3807.    return;
  3808.  
  3809.   case kDECL_LIST:
  3810. # line 2017 "FUnparse.puma"
  3811.   {
  3812. # line 2018 "FUnparse.puma"
  3813.    fprintf (f, ", ");
  3814. # line 2019 "FUnparse.puma"
  3815.    AttributeUnparse (t->DECL_LIST.Elem);
  3816. # line 2020 "FUnparse.puma"
  3817.    AttributeUnparse (t->DECL_LIST.Next);
  3818.   }
  3819.    return;
  3820.  
  3821.   case kDIMENSION_DECL:
  3822. # line 2023 "FUnparse.puma"
  3823.   {
  3824. # line 2024 "FUnparse.puma"
  3825.    fprintf (f, "DIMENSION(");
  3826. # line 2025 "FUnparse.puma"
  3827.    Unparse (t->DIMENSION_DECL.INDEXES);
  3828. # line 2026 "FUnparse.puma"
  3829.    fprintf (f, ")");
  3830.   }
  3831.    return;
  3832.  
  3833.   case kTYPESPEC_DECL:
  3834. # line 2029 "FUnparse.puma"
  3835.   {
  3836. # line 2030 "FUnparse.puma"
  3837.    Unparse (t->TYPESPEC_DECL.VAL);
  3838.   }
  3839.    return;
  3840.  
  3841.   case kINIT_DATA_DECL:
  3842.   if (t->INIT_DATA_DECL.VAL->Kind == kDUMMY_EXP) {
  3843. # line 2033 "FUnparse.puma"
  3844.   {
  3845. # line 2034 "FUnparse.puma"
  3846.    fprintf (f, "DATA");
  3847.   }
  3848.    return;
  3849.  
  3850.   }
  3851. # line 2037 "FUnparse.puma"
  3852.   {
  3853. # line 2038 "FUnparse.puma"
  3854.    fprintf (f, "INIT = ");
  3855. # line 2039 "FUnparse.puma"
  3856.    Unparse (t->INIT_DATA_DECL.VAL);
  3857.   }
  3858.    return;
  3859.  
  3860.   case kALLOCATABLE_DECL:
  3861. # line 2042 "FUnparse.puma"
  3862.   {
  3863. # line 2043 "FUnparse.puma"
  3864.    fprintf (f, "ALLOCATABLE");
  3865.   }
  3866.    return;
  3867.  
  3868.   case kEXTERNAL_DECL:
  3869. # line 2046 "FUnparse.puma"
  3870.   {
  3871. # line 2047 "FUnparse.puma"
  3872.    fprintf (f, "EXTERNAL");
  3873.   }
  3874.    return;
  3875.  
  3876.   case kINTENT_DECL:
  3877.   if (equalint (t->INTENT_DECL.intent, 0)) {
  3878. # line 2050 "FUnparse.puma"
  3879.   {
  3880. # line 2051 "FUnparse.puma"
  3881.    fprintf (f, "INTENT(IN)");
  3882.   }
  3883.    return;
  3884.  
  3885.   }
  3886.   if (equalint (t->INTENT_DECL.intent, 1)) {
  3887. # line 2054 "FUnparse.puma"
  3888.   {
  3889. # line 2055 "FUnparse.puma"
  3890.    fprintf (f, "INTENT(OUT)");
  3891.   }
  3892.    return;
  3893.  
  3894.   }
  3895.   if (equalint (t->INTENT_DECL.intent, 2)) {
  3896. # line 2058 "FUnparse.puma"
  3897.   {
  3898. # line 2059 "FUnparse.puma"
  3899.    fprintf (f, "INTENT(INOUT)");
  3900.   }
  3901.    return;
  3902.  
  3903.   }
  3904.   break;
  3905.   case kINTRINSIC_DECL:
  3906. # line 2062 "FUnparse.puma"
  3907.   {
  3908. # line 2063 "FUnparse.puma"
  3909.    fprintf (f, "INTRINSIC");
  3910.   }
  3911.    return;
  3912.  
  3913.   case kOPTIONAL_DECL:
  3914. # line 2066 "FUnparse.puma"
  3915.   {
  3916. # line 2067 "FUnparse.puma"
  3917.    fprintf (f, "OPTIONAL");
  3918.   }
  3919.    return;
  3920.  
  3921.   case kPOINTER_DECL:
  3922. # line 2070 "FUnparse.puma"
  3923.   {
  3924. # line 2071 "FUnparse.puma"
  3925.    fprintf (f, "POINTER");
  3926.   }
  3927.    return;
  3928.  
  3929.   case kSAVE_DECL:
  3930. # line 2074 "FUnparse.puma"
  3931.   {
  3932. # line 2075 "FUnparse.puma"
  3933.    fprintf (f, "SAVE");
  3934.   }
  3935.    return;
  3936.  
  3937.   case kTARGET_DECL:
  3938. # line 2078 "FUnparse.puma"
  3939.   {
  3940. # line 2079 "FUnparse.puma"
  3941.    fprintf (f, "TARGET");
  3942.   }
  3943.    return;
  3944.  
  3945.   case kPARAMETER_DECL:
  3946. # line 2082 "FUnparse.puma"
  3947.   {
  3948. # line 2083 "FUnparse.puma"
  3949.    fprintf (f, "PARAMETER");
  3950.   }
  3951.    return;
  3952.  
  3953.   case kPUBLIC_DECL:
  3954. # line 2086 "FUnparse.puma"
  3955.   {
  3956. # line 2087 "FUnparse.puma"
  3957.    fprintf (f, "PUBLIC");
  3958.   }
  3959.    return;
  3960.  
  3961.   case kPRIVATE_DECL:
  3962. # line 2090 "FUnparse.puma"
  3963.   {
  3964. # line 2091 "FUnparse.puma"
  3965.    fprintf (f, "PRIVATE");
  3966.   }
  3967.    return;
  3968.  
  3969.   case kTEMPLATE_DECL:
  3970.   if (t->TEMPLATE_DECL.DIMENSIONS->Kind == kTYPE_EMPTY) {
  3971. # line 2094 "FUnparse.puma"
  3972.   {
  3973. # line 2095 "FUnparse.puma"
  3974.    fprintf (f, "TEMPLATE");
  3975.   }
  3976.    return;
  3977.  
  3978.   }
  3979. # line 2098 "FUnparse.puma"
  3980.   {
  3981. # line 2099 "FUnparse.puma"
  3982.    fprintf (f, "TEMPLATE (");
  3983. # line 2100 "FUnparse.puma"
  3984.    Unparse (t->TEMPLATE_DECL.DIMENSIONS);
  3985. # line 2101 "FUnparse.puma"
  3986.    fprintf (f, ")");
  3987.   }
  3988.    return;
  3989.  
  3990.   case kPROCESSORS_DECL:
  3991.   if (t->PROCESSORS_DECL.DIMENSIONS->Kind == kTYPE_EMPTY) {
  3992. # line 2104 "FUnparse.puma"
  3993.   {
  3994. # line 2105 "FUnparse.puma"
  3995.    fprintf (f, "PROCESSORS");
  3996.   }
  3997.    return;
  3998.  
  3999.   }
  4000. # line 2108 "FUnparse.puma"
  4001.   {
  4002. # line 2109 "FUnparse.puma"
  4003.    fprintf (f, "PROCESSORS (");
  4004. # line 2110 "FUnparse.puma"
  4005.    Unparse (t->PROCESSORS_DECL.DIMENSIONS);
  4006. # line 2111 "FUnparse.puma"
  4007.    fprintf (f, ")");
  4008.   }
  4009.    return;
  4010.  
  4011.   case kALIGN_DECL:
  4012.   if (t->ALIGN_DECL.ALIGN_SOURCE->Kind == kBTE_EMPTY) {
  4013. # line 2114 "FUnparse.puma"
  4014.   {
  4015. # line 2115 "FUnparse.puma"
  4016.    fprintf (f, "ALIGN WITH ");
  4017. # line 2116 "FUnparse.puma"
  4018.    AlignSpecUnparse (t->ALIGN_DECL.ALIGN_SPEC);
  4019.   }
  4020.    return;
  4021.  
  4022.   }
  4023. # line 2119 "FUnparse.puma"
  4024.   {
  4025. # line 2120 "FUnparse.puma"
  4026.    fprintf (f, "ALIGN (");
  4027. # line 2121 "FUnparse.puma"
  4028.    Unparse (t->ALIGN_DECL.ALIGN_SOURCE);
  4029. # line 2122 "FUnparse.puma"
  4030.    fprintf (f, ") WITH ");
  4031. # line 2123 "FUnparse.puma"
  4032.    AlignSpecUnparse (t->ALIGN_DECL.ALIGN_SPEC);
  4033.   }
  4034.    return;
  4035.  
  4036.   case kDYNAMIC_DECL:
  4037. # line 2126 "FUnparse.puma"
  4038.   {
  4039. # line 2127 "FUnparse.puma"
  4040.    fprintf (f, "DYNAMIC", string);
  4041.   }
  4042.    return;
  4043.  
  4044.   case kDISTRIBUTE_DECL:
  4045. # line 2130 "FUnparse.puma"
  4046.   {
  4047. # line 2131 "FUnparse.puma"
  4048.    fprintf (f, "DISTRIBUTE ");
  4049. # line 2132 "FUnparse.puma"
  4050.    LayoutUnparse (t->DISTRIBUTE_DECL.DISTRIBUTION);
  4051. # line 2133 "FUnparse.puma"
  4052.  if (t->DISTRIBUTE_DECL.target != NoId())
  4053.             { GetString (t->DISTRIBUTE_DECL.target, string);
  4054.               fprintf (f," ONTO %s", string);
  4055.             }
  4056.  
  4057.   }
  4058.    return;
  4059.  
  4060.   }
  4061.  
  4062. # line 2140 "FUnparse.puma"
  4063.   {
  4064. # line 2141 "FUnparse.puma"
  4065.    fprintf (f, "<attribute>");
  4066.   }
  4067.    return;
  4068.  
  4069. ;
  4070. }
  4071.  
  4072. static void AlignSpecUnparse
  4073. # if defined __STDC__ | defined __cplusplus
  4074. (register tTree t)
  4075. # else
  4076. (t)
  4077.  register tTree t;
  4078. # endif
  4079. {
  4080. # line 2156 "FUnparse.puma"
  4081.  
  4082. unsigned char string[256];
  4083.  
  4084.   if (t == NoTree) return;
  4085.   if (t->Kind == kDUMMY_VAR) {
  4086. # line 2160 "FUnparse.puma"
  4087.   {
  4088. # line 2161 "FUnparse.puma"
  4089.    fprintf (f, "*");
  4090.   }
  4091.    return;
  4092.  
  4093.   }
  4094.   if (t->Kind == kINDEXED_VAR) {
  4095.   if (t->INDEXED_VAR.IND_EXPS->Kind == kBTE_EMPTY) {
  4096. # line 2164 "FUnparse.puma"
  4097.   {
  4098. # line 2165 "FUnparse.puma"
  4099.    fprintf (f, "*");
  4100. # line 2166 "FUnparse.puma"
  4101.    Unparse (t->INDEXED_VAR.IND_VAR);
  4102.   }
  4103.    return;
  4104.  
  4105.   }
  4106.   }
  4107. # line 2169 "FUnparse.puma"
  4108.   {
  4109. # line 2170 "FUnparse.puma"
  4110.    Unparse (t);
  4111.   }
  4112.    return;
  4113.  
  4114. ;
  4115. }
  4116.  
  4117. static void UseNameUnparse
  4118. # if defined __STDC__ | defined __cplusplus
  4119. (register tTree t)
  4120. # else
  4121. (t)
  4122.  register tTree t;
  4123. # endif
  4124. {
  4125. # line 2175 "FUnparse.puma"
  4126.  
  4127. unsigned char string[256];
  4128.  
  4129.   if (t == NoTree) return;
  4130.   if (t->Kind == kDECL_LIST) {
  4131.   if (t->DECL_LIST.Next->Kind == kDECL_EMPTY) {
  4132. # line 2179 "FUnparse.puma"
  4133.   {
  4134. # line 2180 "FUnparse.puma"
  4135.    UseNameUnparse (t->DECL_LIST.Elem);
  4136.   }
  4137.    return;
  4138.  
  4139.   }
  4140. # line 2183 "FUnparse.puma"
  4141.   {
  4142. # line 2184 "FUnparse.puma"
  4143.    UseNameUnparse (t->DECL_LIST.Elem);
  4144. # line 2185 "FUnparse.puma"
  4145.    fprintf (f, ", ");
  4146. # line 2186 "FUnparse.puma"
  4147.    UseNameUnparse (t->DECL_LIST.Next);
  4148.   }
  4149.    return;
  4150.  
  4151.   }
  4152.   if (t->Kind == kPRIVATE_DECL) {
  4153. # line 2189 "FUnparse.puma"
  4154.   {
  4155. # line 2190 "FUnparse.puma"
  4156.    fprintf (f, "PRIVATE");
  4157.   }
  4158.    return;
  4159.  
  4160.   }
  4161.   if (t->Kind == kPUBLIC_DECL) {
  4162. # line 2193 "FUnparse.puma"
  4163.   {
  4164. # line 2194 "FUnparse.puma"
  4165.    fprintf (f, "PUBLIC");
  4166.   }
  4167.    return;
  4168.  
  4169.   }
  4170.   if (t->Kind == kNAME_DECL) {
  4171. # line 2197 "FUnparse.puma"
  4172.   {
  4173. # line 2198 "FUnparse.puma"
  4174.    GetString (t->NAME_DECL.Name, string);
  4175. # line 2199 "FUnparse.puma"
  4176.    fprintf (f, "%s", string);
  4177.   }
  4178.    return;
  4179.  
  4180.   }
  4181.   if (t->Kind == kRENAME_DECL) {
  4182. # line 2201 "FUnparse.puma"
  4183.   {
  4184. # line 2202 "FUnparse.puma"
  4185.    GetString (t->RENAME_DECL.Name, string);
  4186. # line 2203 "FUnparse.puma"
  4187.    fprintf (f, "%s => ", string);
  4188. # line 2204 "FUnparse.puma"
  4189.    GetString (t->RENAME_DECL.oldname, string);
  4190. # line 2205 "FUnparse.puma"
  4191.    fprintf (f, "%s", string);
  4192.   }
  4193.    return;
  4194.  
  4195.   }
  4196. ;
  4197. }
  4198.  
  4199. static void GenSpecUnparse
  4200. # if defined __STDC__ | defined __cplusplus
  4201. (register tTree t)
  4202. # else
  4203. (t)
  4204.  register tTree t;
  4205. # endif
  4206. {
  4207. # line 2210 "FUnparse.puma"
  4208.  
  4209. unsigned char string[256];
  4210.  
  4211.   if (t == NoTree) return;
  4212.   if (t->Kind == kNO_GENERIC_SPEC) {
  4213. # line 2214 "FUnparse.puma"
  4214.    return;
  4215.  
  4216.   }
  4217.   if (t->Kind == kID_GENERIC_SPEC) {
  4218. # line 2217 "FUnparse.puma"
  4219.   {
  4220. # line 2218 "FUnparse.puma"
  4221.    GetString (t->ID_GENERIC_SPEC.name, string);
  4222. # line 2219 "FUnparse.puma"
  4223.    fprintf (f, " %s", string);
  4224.   }
  4225.    return;
  4226.  
  4227.   }
  4228.   if (t->Kind == kOP_GENERIC_SPEC) {
  4229. # line 2222 "FUnparse.puma"
  4230.   {
  4231. # line 2223 "FUnparse.puma"
  4232.    fprintf (f, " OPERATOR (");
  4233. # line 2224 "FUnparse.puma"
  4234.    Unparse (t->OP_GENERIC_SPEC.OPERATOR);
  4235. # line 2225 "FUnparse.puma"
  4236.    fprintf (f, ")");
  4237.   }
  4238.    return;
  4239.  
  4240.   }
  4241.   if (t->Kind == kASSIGN_GENERIC_SPEC) {
  4242. # line 2228 "FUnparse.puma"
  4243.   {
  4244. # line 2229 "FUnparse.puma"
  4245.    fprintf (f, "ASSIGNMENT (=)");
  4246.   }
  4247.    return;
  4248.  
  4249.   }
  4250. ;
  4251. }
  4252.  
  4253. void BeginUnparse ()
  4254. {
  4255. # line 110 "FUnparse.puma"
  4256.  
  4257.   f = fopen ("unparse.f","w");
  4258.   indent = 0;
  4259.  
  4260. }
  4261.  
  4262. void CloseUnparse ()
  4263. {
  4264. # line 116 "FUnparse.puma"
  4265.  
  4266.   fclose (f);
  4267.  
  4268. }
  4269.